diff --git a/app/build.gradle b/app/build.gradle
index 51e73b3..e01d39c 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -28,8 +28,8 @@ android {
applicationId 'top.fumiama.copymanga'
minSdkVersion 23
targetSdkVersion 30
- versionCode 15
- versionName '2.0.beta4'
+ versionCode 16
+ versionName '2.0.beta5'
resConfigs "zh", "zh-rCN"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
diff --git a/app/src/main/java/top/fumiama/copymanga/MainActivity.kt b/app/src/main/java/top/fumiama/copymanga/MainActivity.kt
index 3600ab0..8c5a93c 100644
--- a/app/src/main/java/top/fumiama/copymanga/MainActivity.kt
+++ b/app/src/main/java/top/fumiama/copymanga/MainActivity.kt
@@ -21,6 +21,7 @@ import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import androidx.core.net.toUri
import androidx.drawerlayout.widget.DrawerLayout
+import androidx.navigation.NavController
import androidx.navigation.findNavController
import androidx.navigation.ui.AppBarConfiguration
import androidx.navigation.ui.navigateUp
@@ -33,8 +34,8 @@ import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.app_bar_main.*
import kotlinx.android.synthetic.main.nav_header_main.*
import top.fumiama.dmzj.copymanga.R
-import top.fumiama.copymanga.tools.PropertiesTools
-import top.fumiama.copymanga.tools.UITools
+import top.fumiama.copymanga.tools.file.PropertiesTools
+import top.fumiama.copymanga.tools.api.UITools
import top.fumiama.copymanga.ui.download.DownloadFragment
import top.fumiama.copymanga.update.Update
import java.io.File
@@ -45,6 +46,7 @@ import java.lang.ref.WeakReference
class MainActivity : AppCompatActivity() {
var isDrawerClosed = true
var menuMain: Menu? = null
+ var navController: NavController? = null
private lateinit var appBarConfiguration: AppBarConfiguration
private lateinit var p: PropertiesTools
@@ -57,7 +59,7 @@ class MainActivity : AppCompatActivity() {
//translucentStatusBar()
coordiv.layoutParams.height = getStatusBarHeight()
- val navController = findNavController(R.id.nav_host_fragment)
+ navController = findNavController(R.id.nav_host_fragment)
appBarConfiguration = AppBarConfiguration(
setOf(
R.id.nav_home,
@@ -69,8 +71,8 @@ class MainActivity : AppCompatActivity() {
R.id.nav_settings
), drawer_layout
)
- setupActionBarWithNavController(navController, appBarConfiguration)
- nav_view.setupWithNavController(navController)
+ setupActionBarWithNavController(navController!!, appBarConfiguration)
+ nav_view.setupWithNavController(navController!!)
p = PropertiesTools(File(filesDir, "database.prop"))
headPic = File(getExternalFilesDir(""), "headPic")
diff --git a/app/src/main/java/top/fumiama/copymanga/template/ActivityTemplate.kt b/app/src/main/java/top/fumiama/copymanga/template/general/ActivityTemplate.kt
similarity index 86%
rename from app/src/main/java/top/fumiama/copymanga/template/ActivityTemplate.kt
rename to app/src/main/java/top/fumiama/copymanga/template/general/ActivityTemplate.kt
index 7f5adb4..7d3a9c7 100644
--- a/app/src/main/java/top/fumiama/copymanga/template/ActivityTemplate.kt
+++ b/app/src/main/java/top/fumiama/copymanga/template/general/ActivityTemplate.kt
@@ -1,10 +1,10 @@
-package top.fumiama.copymanga.template
+package top.fumiama.copymanga.template.general
import android.app.Activity
import android.os.Bundle
import android.view.View
-import top.fumiama.copymanga.tools.PropertiesTools
-import top.fumiama.copymanga.tools.UITools
+import top.fumiama.copymanga.tools.file.PropertiesTools
+import top.fumiama.copymanga.tools.api.UITools
import java.io.File
import java.lang.ref.WeakReference
diff --git a/app/src/main/java/top/fumiama/copymanga/template/MangaPagesFragmentTemplate.kt b/app/src/main/java/top/fumiama/copymanga/template/general/MangaPagesFragmentTemplate.kt
similarity index 93%
rename from app/src/main/java/top/fumiama/copymanga/template/MangaPagesFragmentTemplate.kt
rename to app/src/main/java/top/fumiama/copymanga/template/general/MangaPagesFragmentTemplate.kt
index 0b6a47a..2b8969e 100644
--- a/app/src/main/java/top/fumiama/copymanga/template/MangaPagesFragmentTemplate.kt
+++ b/app/src/main/java/top/fumiama/copymanga/template/general/MangaPagesFragmentTemplate.kt
@@ -1,4 +1,4 @@
-package top.fumiama.copymanga.template
+package top.fumiama.copymanga.template.general
import android.annotation.SuppressLint
import android.os.Bundle
@@ -8,8 +8,9 @@ import android.view.View
import androidx.fragment.app.Fragment
import kotlinx.android.synthetic.main.line_header.view.*
import kotlinx.android.synthetic.main.line_lazybooklines.*
+import top.fumiama.copymanga.template.ui.CardList
import top.fumiama.copymanga.template.handler.MPATHandler
-import top.fumiama.copymanga.tools.UITools
+import top.fumiama.copymanga.tools.api.UITools
import java.lang.Thread.sleep
import java.lang.ref.WeakReference
diff --git a/app/src/main/java/top/fumiama/copymanga/template/NoBackRefreshFragment.kt b/app/src/main/java/top/fumiama/copymanga/template/general/NoBackRefreshFragment.kt
similarity index 93%
rename from app/src/main/java/top/fumiama/copymanga/template/NoBackRefreshFragment.kt
rename to app/src/main/java/top/fumiama/copymanga/template/general/NoBackRefreshFragment.kt
index 0b8075b..ae06c04 100644
--- a/app/src/main/java/top/fumiama/copymanga/template/NoBackRefreshFragment.kt
+++ b/app/src/main/java/top/fumiama/copymanga/template/general/NoBackRefreshFragment.kt
@@ -1,4 +1,4 @@
-package top.fumiama.copymanga.template
+package top.fumiama.copymanga.template.general
import android.os.Bundle
import android.view.LayoutInflater
diff --git a/app/src/main/java/top/fumiama/copymanga/template/TitleActivityTemplate.kt b/app/src/main/java/top/fumiama/copymanga/template/general/TitleActivityTemplate.kt
similarity index 72%
rename from app/src/main/java/top/fumiama/copymanga/template/TitleActivityTemplate.kt
rename to app/src/main/java/top/fumiama/copymanga/template/general/TitleActivityTemplate.kt
index 9188164..4881822 100644
--- a/app/src/main/java/top/fumiama/copymanga/template/TitleActivityTemplate.kt
+++ b/app/src/main/java/top/fumiama/copymanga/template/general/TitleActivityTemplate.kt
@@ -1,9 +1,9 @@
-package top.fumiama.copymanga.template
+package top.fumiama.copymanga.template.general
import android.os.Bundle
import kotlinx.android.synthetic.main.widget_titlebar.*
-open class TitleActivityTemplate:ActivityTemplate() {
+open class TitleActivityTemplate: ActivityTemplate() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
ilogo.setOnClickListener {
diff --git a/app/src/main/java/top/fumiama/copymanga/template/handler/MPATHandler.kt b/app/src/main/java/top/fumiama/copymanga/template/handler/MPATHandler.kt
index 961aabe..1cf52fb 100644
--- a/app/src/main/java/top/fumiama/copymanga/template/handler/MPATHandler.kt
+++ b/app/src/main/java/top/fumiama/copymanga/template/handler/MPATHandler.kt
@@ -10,7 +10,7 @@ import android.widget.Toast
import com.liaoinstan.springview.widget.SpringView
import top.fumiama.dmzj.copymanga.R
import kotlinx.android.synthetic.main.line_lazybooklines.*
-import top.fumiama.copymanga.template.MangaPagesFragmentTemplate
+import top.fumiama.copymanga.template.general.MangaPagesFragmentTemplate
import java.lang.ref.WeakReference
diff --git a/app/src/main/java/top/fumiama/copymanga/template/AutoDownloadHandler.kt b/app/src/main/java/top/fumiama/copymanga/template/http/AutoDownloadHandler.kt
similarity index 88%
rename from app/src/main/java/top/fumiama/copymanga/template/AutoDownloadHandler.kt
rename to app/src/main/java/top/fumiama/copymanga/template/http/AutoDownloadHandler.kt
index ec21ea1..2697d85 100644
--- a/app/src/main/java/top/fumiama/copymanga/template/AutoDownloadHandler.kt
+++ b/app/src/main/java/top/fumiama/copymanga/template/http/AutoDownloadHandler.kt
@@ -1,4 +1,4 @@
-package top.fumiama.copymanga.template
+package top.fumiama.copymanga.template.http
import android.os.Handler
import android.os.Looper
@@ -8,10 +8,11 @@ import com.google.gson.Gson
import top.fumiama.dmzj.copymanga.R
import top.fumiama.copymanga.MainActivity.Companion.mainWeakReference
import top.fumiama.copymanga.json.ReturnBase
-import top.fumiama.copymanga.tools.DownloadTools
-import top.fumiama.copymanga.tools.TimeThread
+import top.fumiama.copymanga.tools.http.DownloadTools
+import top.fumiama.copymanga.tools.thread.TimeThread
open class AutoDownloadHandler(private val url: String, private val jsonClass: Class<*>, looper: Looper, private val callCheckMsg: Int = -1): Handler(looper) {
+ var exit = false
private var timeThread: TimeThread? = null
private var checkTimes = 0
override fun handleMessage(msg: Message) {
@@ -28,12 +29,16 @@ open class AutoDownloadHandler(private val url: String, private val jsonClass: C
fun startLoad() {
sendEmptyMessage(0)
}
+ fun destroy() {
+ exit = true
+ }
private fun download(){
Thread{
DownloadTools.getHttpContent(url,
mainWeakReference?.get()?.getString(R.string.referUrl)!!,
mainWeakReference?.get()?.getString(R.string.pc_ua)!!
)?.let {
+ if(exit) return@Thread
val fi = it.inputStream()
setGsonItem(Gson().fromJson(fi.reader(), jsonClass))
fi.close()
diff --git a/app/src/main/java/top/fumiama/copymanga/template/AutoDownloadThread.kt b/app/src/main/java/top/fumiama/copymanga/template/http/AutoDownloadThread.kt
similarity index 73%
rename from app/src/main/java/top/fumiama/copymanga/template/AutoDownloadThread.kt
rename to app/src/main/java/top/fumiama/copymanga/template/http/AutoDownloadThread.kt
index b45aabe..8ff0e48 100644
--- a/app/src/main/java/top/fumiama/copymanga/template/AutoDownloadThread.kt
+++ b/app/src/main/java/top/fumiama/copymanga/template/http/AutoDownloadThread.kt
@@ -1,20 +1,21 @@
-package top.fumiama.copymanga.template
+package top.fumiama.copymanga.template.http
import top.fumiama.dmzj.copymanga.R
import top.fumiama.copymanga.MainActivity.Companion.mainWeakReference
-import top.fumiama.copymanga.tools.DownloadTools
+import top.fumiama.copymanga.tools.http.DownloadTools
class AutoDownloadThread(private val url: String, private val whenFinish: (result: ByteArray?)->Unit): Thread() {
+ var exit = false
override fun run() {
super.run()
var re: ByteArray? = null
var c = 0
- while (re == null && c++ < 3){
+ while (!exit && re == null && c++ < 3){
re = DownloadTools.getHttpContent(url,
mainWeakReference?.get()?.getString(R.string.referUrl)!!,
mainWeakReference?.get()?.getString(R.string.pc_ua)!!
)
}
- whenFinish(re)
+ if(!exit) whenFinish(re)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/top/fumiama/copymanga/template/CardList.kt b/app/src/main/java/top/fumiama/copymanga/template/ui/CardList.kt
similarity index 97%
rename from app/src/main/java/top/fumiama/copymanga/template/CardList.kt
rename to app/src/main/java/top/fumiama/copymanga/template/ui/CardList.kt
index 07eb45c..414b398 100644
--- a/app/src/main/java/top/fumiama/copymanga/template/CardList.kt
+++ b/app/src/main/java/top/fumiama/copymanga/template/ui/CardList.kt
@@ -1,4 +1,4 @@
-package top.fumiama.copymanga.template
+package top.fumiama.copymanga.template.ui
import android.annotation.SuppressLint
import android.net.Uri
@@ -11,7 +11,7 @@ import kotlinx.android.synthetic.main.card_book.view.*
import kotlinx.android.synthetic.main.line_horizonal_empty.view.*
import kotlinx.android.synthetic.main.line_lazybooklines.*
import top.fumiama.copymanga.MainActivity.Companion.mainWeakReference
-import top.fumiama.copymanga.tools.CMApi
+import top.fumiama.copymanga.tools.api.CMApi
import top.fumiama.dmzj.copymanga.R
import java.io.File
import java.lang.ref.WeakReference
diff --git a/app/src/main/java/top/fumiama/copymanga/template/InfoCardLoader.kt b/app/src/main/java/top/fumiama/copymanga/template/ui/InfoCardLoader.kt
similarity index 65%
rename from app/src/main/java/top/fumiama/copymanga/template/InfoCardLoader.kt
rename to app/src/main/java/top/fumiama/copymanga/template/ui/InfoCardLoader.kt
index e73c8a6..98aa74f 100644
--- a/app/src/main/java/top/fumiama/copymanga/template/InfoCardLoader.kt
+++ b/app/src/main/java/top/fumiama/copymanga/template/ui/InfoCardLoader.kt
@@ -1,26 +1,26 @@
-package top.fumiama.copymanga.template
+package top.fumiama.copymanga.template.ui
import android.os.Bundle
-import android.util.JsonReader
+import android.util.Log
import android.view.View
import androidx.fragment.app.Fragment
import androidx.navigation.Navigation
import com.google.gson.Gson
-import top.fumiama.dmzj.copymanga.R
import top.fumiama.copymanga.json.BookListStructure
import top.fumiama.copymanga.json.TypeBookListStructure
-import top.fumiama.copymanga.tools.DownloadTools
-import java.io.File
+import top.fumiama.copymanga.template.general.MangaPagesFragmentTemplate
+import top.fumiama.copymanga.template.http.AutoDownloadThread
import java.lang.ref.WeakReference
@ExperimentalStdlibApi
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
init {
pageHandler = object : PageHandler {
override fun addPage(){
- AutoDownloadThread(subUrl){
+ ad = AutoDownloadThread(subUrl){
if(isRefresh){
page = 0
isRefresh = false
@@ -28,9 +28,13 @@ open class InfoCardLoader(inflateRes:Int, private val navId:Int, private val isT
if(isTypeBook) {
val bookList = Gson().fromJson(it?.decodeToString(), TypeBookListStructure::class.java)
bookList?.apply {
+ Log.d("MyICL", "offset:${results.offset}, total:${results.total}")
if(results.offset < results.total) {
- if(code == 200) results.list.forEach { book ->
- cardList.addCard(book.comic.name, null, book.comic.cover, book.comic.path_word, null, null, false)
+ if(code == 200) {
+ results.list.forEach { book ->
+ cardList.addCard(book.comic.name, null, book.comic.cover, book.comic.path_word, null, null, false)
+ }
+ offset += results.list.size
}
}
page++
@@ -38,16 +42,21 @@ open class InfoCardLoader(inflateRes:Int, private val navId:Int, private val isT
} else {
val bookList = Gson().fromJson(it?.decodeToString(), BookListStructure::class.java)
bookList?.apply {
+ Log.d("MyICL", "offset:${results.offset}, total:${results.total}")
if(results.offset < results.total) {
- if(code == 200) results.list.forEach{ book ->
- cardList.addCard(book.name, null, book.cover, book.path_word, null, null, false)
+ if(code == 200) {
+ results.list.forEach{ book ->
+ cardList.addCard(book.name, null, book.cover, book.path_word, null, null, false)
+ }
+ offset += results.list.size
}
}
page++
}
}
onLoadFinish()
- }.start()
+ }
+ ad?.start()
}
override fun initCardList(weakReference: WeakReference) {
cardList = CardList(weakReference, cardWidth, cardHeight, cardPerRow)
@@ -72,4 +81,9 @@ open class InfoCardLoader(inflateRes:Int, private val navId:Int, private val isT
open fun setListeners(){}
open fun onLoadFinish(){}
+
+ override fun onDestroy() {
+ super.onDestroy()
+ ad?.exit = true
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/top/fumiama/copymanga/tools/CMApi.kt b/app/src/main/java/top/fumiama/copymanga/tools/api/CMApi.kt
similarity index 63%
rename from app/src/main/java/top/fumiama/copymanga/tools/CMApi.kt
rename to app/src/main/java/top/fumiama/copymanga/tools/api/CMApi.kt
index 58365cc..9421d35 100644
--- a/app/src/main/java/top/fumiama/copymanga/tools/CMApi.kt
+++ b/app/src/main/java/top/fumiama/copymanga/tools/api/CMApi.kt
@@ -1,4 +1,4 @@
-package top.fumiama.copymanga.tools
+package top.fumiama.copymanga.tools.api
import com.bumptech.glide.load.model.LazyHeaders
import top.fumiama.dmzj.copymanga.R
@@ -9,7 +9,15 @@ import java.io.File
object CMApi {
var myGlideHeaders: LazyHeaders? = null
get() {
- if(field === null) field = LazyHeaders.Builder().addHeader("referer", MainActivity.mainWeakReference?.get()?.getString(R.string.referUrl)!!).addHeader("User-Agent", MainActivity.mainWeakReference?.get()?.getString(R.string.pc_ua)!!).build()
+ if(field === null)
+ field = LazyHeaders.Builder()
+ .addHeader("referer", MainActivity.mainWeakReference?.get()?.getString(R.string.referUrl)!!)
+ .addHeader("User-Agent", MainActivity.mainWeakReference?.get()?.getString(R.string.pc_ua)!!)
+ .addHeader("source", "copyApp")
+ .addHeader("webp", "1")
+ .addHeader("region", "1")
+ .addHeader("platform", "3")
+ .build()
return field
}
fun getImgZipFileFromVM(exDir: File?, chapter2Return: Chapter2Return?) = File(exDir, "${chapter2Return?.results?.comic?.name}/${chapter2Return?.results?.chapter?.group_path_word}/${chapter2Return?.results?.chapter?.name}.zip")
diff --git a/app/src/main/java/top/fumiama/copymanga/tools/GlideBlurTransformation.kt b/app/src/main/java/top/fumiama/copymanga/tools/api/GlideBlurTransformation.kt
similarity index 98%
rename from app/src/main/java/top/fumiama/copymanga/tools/GlideBlurTransformation.kt
rename to app/src/main/java/top/fumiama/copymanga/tools/api/GlideBlurTransformation.kt
index 8b325c4..810880c 100644
--- a/app/src/main/java/top/fumiama/copymanga/tools/GlideBlurTransformation.kt
+++ b/app/src/main/java/top/fumiama/copymanga/tools/api/GlideBlurTransformation.kt
@@ -1,4 +1,4 @@
-package top.fumiama.copymanga.tools
+package top.fumiama.copymanga.tools.api
import android.content.Context
import android.graphics.Bitmap
diff --git a/app/src/main/java/top/fumiama/copymanga/tools/UITools.kt b/app/src/main/java/top/fumiama/copymanga/tools/api/UITools.kt
similarity index 99%
rename from app/src/main/java/top/fumiama/copymanga/tools/UITools.kt
rename to app/src/main/java/top/fumiama/copymanga/tools/api/UITools.kt
index 640e7cf..53d5ddb 100644
--- a/app/src/main/java/top/fumiama/copymanga/tools/UITools.kt
+++ b/app/src/main/java/top/fumiama/copymanga/tools/api/UITools.kt
@@ -1,4 +1,4 @@
-package top.fumiama.copymanga.tools
+package top.fumiama.copymanga.tools.api
import android.app.Activity
import android.app.AlertDialog
diff --git a/app/src/main/java/top/fumiama/copymanga/tools/PropertiesTools.kt b/app/src/main/java/top/fumiama/copymanga/tools/file/PropertiesTools.kt
similarity index 97%
rename from app/src/main/java/top/fumiama/copymanga/tools/PropertiesTools.kt
rename to app/src/main/java/top/fumiama/copymanga/tools/file/PropertiesTools.kt
index feb7246..a02d961 100644
--- a/app/src/main/java/top/fumiama/copymanga/tools/PropertiesTools.kt
+++ b/app/src/main/java/top/fumiama/copymanga/tools/file/PropertiesTools.kt
@@ -1,4 +1,4 @@
-package top.fumiama.copymanga.tools
+package top.fumiama.copymanga.tools.file
//PropertiesTools.kt
//created by fumiama 20200724
import android.util.Log
diff --git a/app/src/main/java/top/fumiama/copymanga/tools/DownloadTools.kt b/app/src/main/java/top/fumiama/copymanga/tools/http/DownloadTools.kt
similarity index 70%
rename from app/src/main/java/top/fumiama/copymanga/tools/DownloadTools.kt
rename to app/src/main/java/top/fumiama/copymanga/tools/http/DownloadTools.kt
index db05f84..c4d46de 100644
--- a/app/src/main/java/top/fumiama/copymanga/tools/DownloadTools.kt
+++ b/app/src/main/java/top/fumiama/copymanga/tools/http/DownloadTools.kt
@@ -1,13 +1,30 @@
-package top.fumiama.copymanga.tools
+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 java.io.File
import java.net.HttpURLConnection
import java.net.URL
+import java.security.SecureRandom
import java.util.concurrent.Callable
import java.util.concurrent.FutureTask
+import javax.net.ssl.HttpsURLConnection
+import javax.net.ssl.SSLContext
object DownloadTools {
+ private val trustManager = AllTrustManager()
+ private val sslContext: SSLContext = SSLContext.getInstance("SSL").let {
+ it.init(null, arrayOf(trustManager), SecureRandom())
+ it
+ }
+ private val ignoreHostNameVerifier = IgnoreHostNameVerifier()
+
+ init {
+ HttpsURLConnection.setDefaultHostnameVerifier(ignoreHostNameVerifier)
+ HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.socketFactory)
+ }
+
fun getHttpContent(Url: String, refer: String? = null, ua: String? = null): ByteArray? {
Log.d("Mydl", "getHttp: $Url")
var ret: ByteArray? = null
@@ -15,9 +32,13 @@ object DownloadTools {
try {
val connection = URL(Url).openConnection() as HttpURLConnection
connection.requestMethod = "GET"
- connection.connectTimeout = 10000
- connection.readTimeout = 10000
+ connection.connectTimeout = 20000
+ connection.readTimeout = 20000
refer?.let { connection.setRequestProperty("referer", it) }
+ connection.setRequestProperty("source", "copyApp")
+ connection.setRequestProperty("webp", "1")
+ connection.setRequestProperty("region", "1")
+ connection.setRequestProperty("platform", "3")
ua?.let { connection.setRequestProperty("User-agent", it) }
ret = connection.inputStream.readBytes()
@@ -41,8 +62,12 @@ object DownloadTools {
try {
val connection = URL(Url).openConnection() as HttpURLConnection
connection.requestMethod = "GET"
- connection.connectTimeout = 10000
- connection.readTimeout = 10000
+ connection.connectTimeout = 20000
+ connection.readTimeout = 20000
+ connection.setRequestProperty("source", "copyApp")
+ connection.setRequestProperty("webp", "1")
+ connection.setRequestProperty("region", "1")
+ connection.setRequestProperty("platform", "3")
if (f.exists()) f.delete()
else f.parentFile?.mkdirs()
@@ -72,8 +97,8 @@ object DownloadTools {
try {
val connection = URL(Url).openConnection() as HttpURLConnection
connection.requestMethod = "GET"
- connection.connectTimeout = 10000
- connection.readTimeout = 10000
+ connection.connectTimeout = 20000
+ connection.readTimeout = 20000
refer?.let { connection.setRequestProperty("referer", it) }
if (f.exists()) f.delete()
@@ -97,8 +122,8 @@ object DownloadTools {
try {
val connection = URL(Url).openConnection() as HttpURLConnection
connection.requestMethod = "GET"
- connection.connectTimeout = 10000
- connection.readTimeout = 10000
+ connection.connectTimeout = 20000
+ connection.readTimeout = 20000
refer?.let { connection.setRequestProperty("referer", it) }
ret = connection.inputStream.readBytes()
diff --git a/app/src/main/java/top/fumiama/copymanga/tools/MangaDlTools.kt b/app/src/main/java/top/fumiama/copymanga/tools/http/MangaDlTools.kt
similarity index 95%
rename from app/src/main/java/top/fumiama/copymanga/tools/MangaDlTools.kt
rename to app/src/main/java/top/fumiama/copymanga/tools/http/MangaDlTools.kt
index c3e6cf3..33177f3 100644
--- a/app/src/main/java/top/fumiama/copymanga/tools/MangaDlTools.kt
+++ b/app/src/main/java/top/fumiama/copymanga/tools/http/MangaDlTools.kt
@@ -1,12 +1,12 @@
-package top.fumiama.copymanga.tools
+package top.fumiama.copymanga.tools.http
import android.util.Log
import com.google.gson.Gson
import top.fumiama.dmzj.copymanga.R
import top.fumiama.copymanga.MainActivity.Companion.mainWeakReference
import top.fumiama.copymanga.json.Chapter2Return
-import top.fumiama.copymanga.template.AutoDownloadThread
-import top.fumiama.copymanga.tools.DownloadTools.getHttpContent
+import top.fumiama.copymanga.template.http.AutoDownloadThread
+import top.fumiama.copymanga.tools.http.DownloadTools.getHttpContent
import java.io.File
import java.lang.Thread.sleep
import java.util.zip.CRC32
diff --git a/app/src/main/java/top/fumiama/copymanga/tools/ssl/AllTrustManager.java b/app/src/main/java/top/fumiama/copymanga/tools/ssl/AllTrustManager.java
new file mode 100644
index 0000000..157e756
--- /dev/null
+++ b/app/src/main/java/top/fumiama/copymanga/tools/ssl/AllTrustManager.java
@@ -0,0 +1,17 @@
+package top.fumiama.copymanga.tools.ssl;
+
+import java.security.cert.X509Certificate;
+import javax.net.ssl.X509TrustManager;
+
+public class AllTrustManager implements X509TrustManager{
+ @Override
+ public void checkClientTrusted(X509Certificate[] chain, String authType) { }
+
+ @Override
+ public void checkServerTrusted(X509Certificate[] chain, String authType) { }
+
+ @Override
+ public X509Certificate[] getAcceptedIssuers() {
+ return null;
+ }
+}
diff --git a/app/src/main/java/top/fumiama/copymanga/tools/ssl/IgnoreHostNameVerifier.java b/app/src/main/java/top/fumiama/copymanga/tools/ssl/IgnoreHostNameVerifier.java
new file mode 100644
index 0000000..08c6578
--- /dev/null
+++ b/app/src/main/java/top/fumiama/copymanga/tools/ssl/IgnoreHostNameVerifier.java
@@ -0,0 +1,11 @@
+package top.fumiama.copymanga.tools.ssl;
+
+import javax.net.ssl.HostnameVerifier;
+import javax.net.ssl.SSLSession;
+
+public class IgnoreHostNameVerifier implements HostnameVerifier {
+ @Override
+ public boolean verify(String hostname, SSLSession session) {
+ return true;
+ }
+}
diff --git a/app/src/main/java/top/fumiama/copymanga/tools/TimeThread.kt b/app/src/main/java/top/fumiama/copymanga/tools/thread/TimeThread.kt
similarity index 90%
rename from app/src/main/java/top/fumiama/copymanga/tools/TimeThread.kt
rename to app/src/main/java/top/fumiama/copymanga/tools/thread/TimeThread.kt
index f5c76cc..5d29f1b 100644
--- a/app/src/main/java/top/fumiama/copymanga/tools/TimeThread.kt
+++ b/app/src/main/java/top/fumiama/copymanga/tools/thread/TimeThread.kt
@@ -1,4 +1,4 @@
-package top.fumiama.copymanga.tools
+package top.fumiama.copymanga.tools.thread
import android.os.Handler
diff --git a/app/src/main/java/top/fumiama/copymanga/ui/book/BookFragment.kt b/app/src/main/java/top/fumiama/copymanga/ui/book/BookFragment.kt
index 266afbb..ce0edd1 100644
--- a/app/src/main/java/top/fumiama/copymanga/ui/book/BookFragment.kt
+++ b/app/src/main/java/top/fumiama/copymanga/ui/book/BookFragment.kt
@@ -7,11 +7,11 @@ import android.view.View
import androidx.navigation.Navigation
import top.fumiama.dmzj.copymanga.R
import top.fumiama.copymanga.MainActivity.Companion.mainWeakReference
-import top.fumiama.copymanga.template.NoBackRefreshFragment
+import top.fumiama.copymanga.template.general.NoBackRefreshFragment
import java.lang.Thread.sleep
import java.lang.ref.WeakReference
-class BookFragment:NoBackRefreshFragment(R.layout.fragment_book) {
+class BookFragment: NoBackRefreshFragment(R.layout.fragment_book) {
private lateinit var bookHandler: BookHandler
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
@@ -34,6 +34,7 @@ class BookFragment:NoBackRefreshFragment(R.layout.fragment_book) {
override fun onDestroy() {
super.onDestroy()
mainWeakReference?.get()?.menuMain?.let { setMenuInvisible(it) }
+ bookHandler.destroy()
}
private fun setMenuInvisible(menu: Menu){
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 380554d..1e3d085 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
@@ -4,15 +4,12 @@ import android.os.Bundle
import android.os.Looper
import android.os.Message
import android.util.Log
-import android.view.Menu
import android.view.View
-import android.view.ViewTreeObserver
import android.widget.TextView
import android.widget.Toast
import androidx.navigation.Navigation
import com.bumptech.glide.Glide
import com.bumptech.glide.load.model.GlideUrl
-import com.bumptech.glide.load.model.LazyHeaders
import com.bumptech.glide.request.RequestOptions
import kotlinx.android.synthetic.main.app_bar_main.*
import kotlinx.android.synthetic.main.card_book.*
@@ -24,15 +21,14 @@ import kotlinx.android.synthetic.main.line_chapter.view.*
import top.fumiama.dmzj.copymanga.R
import top.fumiama.copymanga.MainActivity.Companion.mainWeakReference
import top.fumiama.copymanga.json.BookInfoStructure
-import top.fumiama.copymanga.json.ReturnBase
import top.fumiama.copymanga.json.ThemeStructure
-import top.fumiama.copymanga.template.AutoDownloadHandler
-import top.fumiama.copymanga.tools.CMApi
-import top.fumiama.copymanga.tools.GlideBlurTransformation
+import top.fumiama.copymanga.template.http.AutoDownloadHandler
+import top.fumiama.copymanga.tools.api.CMApi
+import top.fumiama.copymanga.tools.api.GlideBlurTransformation
import java.lang.ref.WeakReference
class BookHandler(that: WeakReference, path: String)
- :AutoDownloadHandler(
+ : AutoDownloadHandler(
that.get()?.getString(R.string.bookInfoApiUrl)?.let { String.format(it, path) } ?: "",
BookInfoStructure::class.java,
Looper.myLooper()!!){
@@ -64,6 +60,7 @@ class BookHandler(that: WeakReference, path: String)
override fun onError() {
super.onError()
+ if(exit) return
if(!hasToastedError) {
Toast.makeText(that?.context, R.string.null_book, Toast.LENGTH_SHORT).show()
that?.rootView?.let { it1 ->
@@ -80,6 +77,7 @@ class BookHandler(that: WeakReference, path: String)
override fun getGsonItem() = book
override fun doWhenFinishDownload() {
super.doWhenFinishDownload()
+ if(exit) return
inflateComponents()
Thread{ for (i in 1..6) sendEmptyMessage(i) }.start()
}
diff --git a/app/src/main/java/top/fumiama/copymanga/ui/cardflow/finish/FinishFragment.kt b/app/src/main/java/top/fumiama/copymanga/ui/cardflow/finish/FinishFragment.kt
index e40c47e..62352ba 100644
--- a/app/src/main/java/top/fumiama/copymanga/ui/cardflow/finish/FinishFragment.kt
+++ b/app/src/main/java/top/fumiama/copymanga/ui/cardflow/finish/FinishFragment.kt
@@ -6,7 +6,7 @@ import kotlinx.android.synthetic.main.anchor_popular.view.*
import kotlinx.android.synthetic.main.line_finish.*
import kotlinx.android.synthetic.main.line_lazybooklines.*
import top.fumiama.copymanga.MainActivity.Companion.mainWeakReference
-import top.fumiama.copymanga.template.InfoCardLoader
+import top.fumiama.copymanga.template.ui.InfoCardLoader
import top.fumiama.dmzj.copymanga.R
import java.lang.Thread.sleep
diff --git a/app/src/main/java/top/fumiama/copymanga/ui/cardflow/newest/NewestFragment.kt b/app/src/main/java/top/fumiama/copymanga/ui/cardflow/newest/NewestFragment.kt
index ba47786..2e61074 100644
--- a/app/src/main/java/top/fumiama/copymanga/ui/cardflow/newest/NewestFragment.kt
+++ b/app/src/main/java/top/fumiama/copymanga/ui/cardflow/newest/NewestFragment.kt
@@ -3,7 +3,7 @@ package top.fumiama.copymanga.ui.cardflow.newest
import android.view.View
import kotlinx.android.synthetic.main.line_lazybooklines.*
import top.fumiama.copymanga.MainActivity.Companion.mainWeakReference
-import top.fumiama.copymanga.template.InfoCardLoader
+import top.fumiama.copymanga.template.ui.InfoCardLoader
import top.fumiama.dmzj.copymanga.R
@ExperimentalStdlibApi
diff --git a/app/src/main/java/top/fumiama/copymanga/ui/cardflow/rank/RankFragment.kt b/app/src/main/java/top/fumiama/copymanga/ui/cardflow/rank/RankFragment.kt
new file mode 100644
index 0000000..1ed4c4b
--- /dev/null
+++ b/app/src/main/java/top/fumiama/copymanga/ui/cardflow/rank/RankFragment.kt
@@ -0,0 +1,54 @@
+package top.fumiama.copymanga.ui.cardflow.rank
+
+import android.view.View
+import com.google.android.material.tabs.TabLayout
+import kotlinx.android.synthetic.main.fragment_rank.*
+import kotlinx.android.synthetic.main.line_lazybooklines.*
+import kotlinx.android.synthetic.main.line_rank.view.*
+import top.fumiama.copymanga.MainActivity.Companion.mainWeakReference
+import top.fumiama.copymanga.template.ui.InfoCardLoader
+import top.fumiama.dmzj.copymanga.R
+import java.lang.Thread.sleep
+
+@ExperimentalStdlibApi
+class RankFragment : InfoCardLoader(R.layout.fragment_rank, R.id.action_nav_rank_to_nav_book, true) {
+ private val sortWay = listOf("day", "week", "month", "total")
+ private var sortValue = 0
+
+ override fun getApiUrl() =
+ getString(R.string.rankApiUrl).let {
+ String.format(
+ it,
+ page * 21,
+ sortWay[sortValue]
+ )
+ }
+
+ override fun setListeners() {
+ super.setListeners()
+ frlai.lrt.addOnTabSelectedListener(object: TabLayout.OnTabSelectedListener {
+ override fun onTabReselected(tab: TabLayout.Tab?) {}
+
+ override fun onTabSelected(tab: TabLayout.Tab?) {
+ setSortValue(tab?.position?:0)
+ }
+
+ override fun onTabUnselected(tab: TabLayout.Tab?) {}
+ })
+ }
+
+ override fun onLoadFinish() {
+ super.onLoadFinish()
+ mainWeakReference?.get()?.runOnUiThread {
+ mypl.visibility = View.GONE
+ }
+ }
+
+ private fun setSortValue(value: Int) {
+ sortValue = value
+ Thread{
+ sleep(400)
+ mh?.sendEmptyMessage(4)
+ }.start()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/top/fumiama/copymanga/ui/cardflow/recommend/RecFragment.kt b/app/src/main/java/top/fumiama/copymanga/ui/cardflow/recommend/RecFragment.kt
index d6f923c..750fdfc 100644
--- a/app/src/main/java/top/fumiama/copymanga/ui/cardflow/recommend/RecFragment.kt
+++ b/app/src/main/java/top/fumiama/copymanga/ui/cardflow/recommend/RecFragment.kt
@@ -3,7 +3,7 @@ package top.fumiama.copymanga.ui.cardflow.recommend
import android.view.View
import kotlinx.android.synthetic.main.line_lazybooklines.*
import top.fumiama.copymanga.MainActivity.Companion.mainWeakReference
-import top.fumiama.copymanga.template.InfoCardLoader
+import top.fumiama.copymanga.template.ui.InfoCardLoader
import top.fumiama.dmzj.copymanga.R
@ExperimentalStdlibApi
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 ec1f2bd..ef8424b 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
@@ -10,8 +10,8 @@ import kotlinx.android.synthetic.main.line_sort.*
import top.fumiama.dmzj.copymanga.R
import top.fumiama.copymanga.MainActivity.Companion.mainWeakReference
import top.fumiama.copymanga.json.FilterStructure
-import top.fumiama.copymanga.template.AutoDownloadThread
-import top.fumiama.copymanga.template.InfoCardLoader
+import top.fumiama.copymanga.template.http.AutoDownloadThread
+import top.fumiama.copymanga.template.ui.InfoCardLoader
import java.lang.Thread.sleep
@ExperimentalStdlibApi
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 615f80c..04ba8ff 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
@@ -8,8 +8,8 @@ import kotlinx.android.synthetic.main.line_lazybooklines.*
import kotlinx.android.synthetic.main.fragment_topic.*
import top.fumiama.copymanga.MainActivity.Companion.mainWeakReference
import top.fumiama.copymanga.json.TopicStructure
-import top.fumiama.copymanga.template.AutoDownloadThread
-import top.fumiama.copymanga.template.InfoCardLoader
+import top.fumiama.copymanga.template.http.AutoDownloadThread
+import top.fumiama.copymanga.template.ui.InfoCardLoader
import top.fumiama.dmzj.copymanga.R
@ExperimentalStdlibApi
@@ -17,7 +17,7 @@ class TopicFragment : InfoCardLoader(R.layout.fragment_topic, R.id.action_nav_to
private var type = 1
override fun getApiUrl() =
getString(R.string.topicContentApiUrl).let {
- String.format(it, arguments?.getString("path"), type, page * 21)
+ String.format(it, arguments?.getString("path"), type, offset)
}
override fun onCreate(savedInstanceState: Bundle?) {
diff --git a/app/src/main/java/top/fumiama/copymanga/ui/chapter/ChapterFragment.kt b/app/src/main/java/top/fumiama/copymanga/ui/chapter/ChapterFragment.kt
index 7a952f8..ec8e03c 100644
--- a/app/src/main/java/top/fumiama/copymanga/ui/chapter/ChapterFragment.kt
+++ b/app/src/main/java/top/fumiama/copymanga/ui/chapter/ChapterFragment.kt
@@ -3,11 +3,11 @@ package top.fumiama.copymanga.ui.chapter
import android.os.Bundle
import android.view.View
import top.fumiama.dmzj.copymanga.R
-import top.fumiama.copymanga.template.NoBackRefreshFragment
+import top.fumiama.copymanga.template.general.NoBackRefreshFragment
import java.lang.Thread.sleep
import java.lang.ref.WeakReference
-class ChapterFragment:NoBackRefreshFragment(R.layout.fragment_chapters) {
+class ChapterFragment: NoBackRefreshFragment(R.layout.fragment_chapters) {
var handler: ChapterHandler? = null
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
@@ -19,4 +19,9 @@ class ChapterFragment:NoBackRefreshFragment(R.layout.fragment_chapters) {
}.start()
}
}
+
+ override fun onDestroy() {
+ super.onDestroy()
+ handler?.destroy()
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/top/fumiama/copymanga/ui/chapter/ChapterHandler.kt b/app/src/main/java/top/fumiama/copymanga/ui/chapter/ChapterHandler.kt
index f7c9d62..87e0025 100644
--- a/app/src/main/java/top/fumiama/copymanga/ui/chapter/ChapterHandler.kt
+++ b/app/src/main/java/top/fumiama/copymanga/ui/chapter/ChapterHandler.kt
@@ -7,21 +7,21 @@ import android.widget.Toast
import androidx.navigation.Navigation
import kotlinx.android.synthetic.main.fragment_book.*
import kotlinx.android.synthetic.main.fragment_chapters.*
-import kotlinx.android.synthetic.main.line_2chapters.view.*
import kotlinx.android.synthetic.main.line_chapter.view.*
import top.fumiama.dmzj.copymanga.R
import top.fumiama.copymanga.json.ChapterStructure
import top.fumiama.copymanga.json.VolumeStructure
-import top.fumiama.copymanga.template.AutoDownloadHandler
+import top.fumiama.copymanga.template.http.AutoDownloadHandler
import java.lang.ref.WeakReference
-class ChapterHandler(that: WeakReference, pw: String, gpw: String):AutoDownloadHandler(
+class ChapterHandler(that: WeakReference, pw: String, gpw: String):
+ AutoDownloadHandler(
that.get()?.getString(R.string.groupInfoApiUrl)?.let { String.format(it, pw, gpw) } ?: "",
VolumeStructure::class.java,
Looper.myLooper()!!
) {
private val that = that.get()
- var hasToastedError = false
+ private var hasToastedError = false
get(){
val re = field
field = true
@@ -46,6 +46,7 @@ class ChapterHandler(that: WeakReference, pw: String, gpw: Stri
override fun onError() {
super.onError()
+ if(exit) return
if(!hasToastedError) {
Toast.makeText(that?.context, R.string.null_book, Toast.LENGTH_SHORT).show()
that?.rootView?.let { it1 ->
@@ -55,6 +56,7 @@ class ChapterHandler(that: WeakReference, pw: String, gpw: Stri
}
override fun doWhenFinishDownload() {
super.doWhenFinishDownload()
+ if(exit) return
Thread{ sendEmptyMessage(1) }.start()
}
private fun inflateChapters(){
diff --git a/app/src/main/java/top/fumiama/copymanga/ui/comicdl/ComicDlFragment.kt b/app/src/main/java/top/fumiama/copymanga/ui/comicdl/ComicDlFragment.kt
index 3f40fd4..a0a9c73 100644
--- a/app/src/main/java/top/fumiama/copymanga/ui/comicdl/ComicDlFragment.kt
+++ b/app/src/main/java/top/fumiama/copymanga/ui/comicdl/ComicDlFragment.kt
@@ -1,28 +1,28 @@
package top.fumiama.copymanga.ui.comicdl
import android.os.Bundle
-import android.os.Handler
import android.os.Looper
-import android.os.Message
import android.util.Log
import android.view.Menu
import android.view.View
import com.google.gson.Gson
-import top.fumiama.dmzj.copymanga.R
import top.fumiama.copymanga.MainActivity.Companion.mainWeakReference
import top.fumiama.copymanga.json.ChapterStructure
import top.fumiama.copymanga.json.VolumeStructure
-import top.fumiama.copymanga.template.AutoDownloadThread
-import top.fumiama.copymanga.template.NoBackRefreshFragment
-import top.fumiama.copymanga.tools.CMApi
+import top.fumiama.copymanga.template.http.AutoDownloadThread
+import top.fumiama.copymanga.template.general.NoBackRefreshFragment
+import top.fumiama.copymanga.tools.api.CMApi
+import top.fumiama.dmzj.copymanga.R
import java.io.File
import java.lang.Thread.sleep
import java.lang.ref.WeakReference
-class ComicDlFragment:NoBackRefreshFragment(R.layout.fragment_dlcomic) {
+class ComicDlFragment: NoBackRefreshFragment(R.layout.fragment_dlcomic) {
var handler: ComicDlHandler? = null
+ var ads = emptyArray()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
+ exit = false
if(isFirstInflate){
when {
arguments?.getBoolean("callFromOldDL", false) == true -> initOldComicData()
@@ -41,10 +41,15 @@ class ComicDlFragment:NoBackRefreshFragment(R.layout.fragment_dlcomic) {
mainWeakReference?.get()?.menuMain?.let { setMenuVisible(it) }
}
- /*override fun onDestroy() {
+ override fun onDestroy() {
super.onDestroy()
- mainWeakReference?.get()?.menuMain?.let { setMenuInvisible(it) }
- }*/
+ //mainWeakReference?.get()?.menuMain?.let { setMenuInvisible(it) }
+ handler?.mangaDlTools?.exit = true
+ ads.forEach {
+ it.exit = true
+ }
+ exit = true
+ }
private fun start2load(volumes: Array, isFromFile: Boolean = false, groupArray: Array? =null){
handler = ComicDlHandler(Looper.myLooper()!!,
@@ -93,22 +98,29 @@ class ComicDlFragment:NoBackRefreshFragment(R.layout.fragment_dlcomic) {
gpws.forEachIndexed { i, gpw ->
Log.d("MyCDF", "下载:$gpw")
var offset = 0
- val re = arrayOfNulls(counts?.get(i)?:1)
+ val times = (counts?.get(i)?:1) / 100
+ val remain = (counts?.get(i)?:1) % 100
+ val re = arrayOfNulls(if(remain != 0) (times+1) else (times))
+ Log.d("MyCDF", "${i}卷共${if(times == 0) 1 else times}次加载")
do {
counts?.set(i, counts[i] - 100)
CMApi.getApiUrl(R.string.groupInfoApiUrl, pw, gpw, offset)?.let {
- AutoDownloadThread(it) { result ->
- //Log.d("MyCDF", "返回:${result?.decodeToString()}")
+ if(exit) return
+ val ad = AutoDownloadThread(it) { result ->
+ Log.d("MyCDF", "第${i}卷返回")
val r = Gson().fromJson(result?.decodeToString(), VolumeStructure::class.java)
re[r.results.offset / 100] = r
- }.start()
+ }
+ ads += ad
+ ad.start()
offset += 100
}
} while ((counts?.get(i) ?: 0) > 0)
Thread {
var c = 0
while (c++ < 80) {
- sleep(100)
+ sleep(1000)
+ if(exit) return@Thread
if(re.all { it != null }) break
}
if(re.size > 1) {
@@ -127,7 +139,8 @@ class ComicDlFragment:NoBackRefreshFragment(R.layout.fragment_dlcomic) {
Thread {
var c = 0
while (c < 80 && volumes.size != gpws.size) {
- sleep(100)
+ sleep(1000)
+ if(exit) return@Thread
Log.d("MyCDF", "已有:${volumes.size} 共:${gpws.size}")
c++
}
@@ -149,5 +162,6 @@ class ComicDlFragment:NoBackRefreshFragment(R.layout.fragment_dlcomic) {
companion object {
var json: String? = null
+ var exit = false
}
}
\ No newline at end of file
diff --git a/app/src/main/java/top/fumiama/copymanga/ui/comicdl/ComicDlHandler.kt b/app/src/main/java/top/fumiama/copymanga/ui/comicdl/ComicDlHandler.kt
index d42058f..d4e23f8 100644
--- a/app/src/main/java/top/fumiama/copymanga/ui/comicdl/ComicDlHandler.kt
+++ b/app/src/main/java/top/fumiama/copymanga/ui/comicdl/ComicDlHandler.kt
@@ -26,10 +26,10 @@ import top.fumiama.dmzj.copymanga.R
import top.fumiama.copymanga.MainActivity.Companion.mainWeakReference
import top.fumiama.copymanga.json.ComicStructureOld
import top.fumiama.copymanga.json.VolumeStructure
-import top.fumiama.copymanga.tools.CMApi
-import top.fumiama.copymanga.tools.MangaDlTools
-import top.fumiama.copymanga.tools.PropertiesTools
-import top.fumiama.copymanga.tools.UITools
+import top.fumiama.copymanga.tools.api.CMApi
+import top.fumiama.copymanga.tools.http.MangaDlTools
+import top.fumiama.copymanga.tools.file.PropertiesTools
+import top.fumiama.copymanga.tools.api.UITools
import top.fumiama.copymanga.ui.comicdl.ComicDlFragment.Companion.json
import top.fumiama.copymanga.ui.vm.ViewMangaActivity
import top.fumiama.copymanga.views.ChapterToggleButton
@@ -64,7 +64,7 @@ class ComicDlHandler(looper: Looper, that: WeakReference, priva
private var tbtnlist: Array = arrayOf()
private var tbtncnt = 0
private var isNewTitle = false
- private val mangaDlTools = MangaDlTools()
+ val mangaDlTools = MangaDlTools()
private var multiSelect = false
private var size = 0
private var refreshSize = true
diff --git a/app/src/main/java/top/fumiama/copymanga/ui/download/DownloadFragment.kt b/app/src/main/java/top/fumiama/copymanga/ui/download/DownloadFragment.kt
index 781e0de..816c387 100644
--- a/app/src/main/java/top/fumiama/copymanga/ui/download/DownloadFragment.kt
+++ b/app/src/main/java/top/fumiama/copymanga/ui/download/DownloadFragment.kt
@@ -5,9 +5,7 @@ import android.content.Intent
import android.os.Bundle
import android.os.Looper
import android.util.Log
-import android.view.LayoutInflater
import android.view.View
-import android.view.ViewGroup
import android.widget.ArrayAdapter
import android.widget.Toast
import androidx.navigation.Navigation
@@ -15,7 +13,7 @@ import kotlinx.android.synthetic.main.app_bar_main.*
import kotlinx.android.synthetic.main.fragment_download.*
import top.fumiama.dmzj.copymanga.R
import top.fumiama.copymanga.MainActivity.Companion.mainWeakReference
-import top.fumiama.copymanga.template.NoBackRefreshFragment
+import top.fumiama.copymanga.template.general.NoBackRefreshFragment
import top.fumiama.copymanga.ui.comicdl.ComicDlFragment
import top.fumiama.copymanga.ui.vm.ViewMangaActivity
import java.io.File
diff --git a/app/src/main/java/top/fumiama/copymanga/ui/home/HomeFragment.kt b/app/src/main/java/top/fumiama/copymanga/ui/home/HomeFragment.kt
index 50d814b..17ec674 100644
--- a/app/src/main/java/top/fumiama/copymanga/ui/home/HomeFragment.kt
+++ b/app/src/main/java/top/fumiama/copymanga/ui/home/HomeFragment.kt
@@ -7,13 +7,12 @@ import androidx.navigation.Navigation
import androidx.recyclerview.widget.RecyclerView
import com.bumptech.glide.Glide
import com.bumptech.glide.load.model.GlideUrl
-import com.bumptech.glide.load.model.LazyHeaders
import kotlinx.android.synthetic.main.fragment_home.*
import kotlinx.android.synthetic.main.viewpage_horizonal.view.*
import top.fumiama.dmzj.copymanga.R
import top.fumiama.copymanga.MainActivity.Companion.mainWeakReference
-import top.fumiama.copymanga.template.NoBackRefreshFragment
-import top.fumiama.copymanga.tools.CMApi
+import top.fumiama.copymanga.template.general.NoBackRefreshFragment
+import top.fumiama.copymanga.tools.api.CMApi
import java.lang.Thread.sleep
import java.lang.ref.WeakReference
@@ -45,6 +44,11 @@ class HomeFragment : NoBackRefreshFragment(R.layout.fragment_home) {
homeHandler = HomeHandler(WeakReference(this))
}
+ override fun onDestroy() {
+ super.onDestroy()
+ homeHandler.destroy()
+ }
+
inner class ViewData(itemView: View) : RecyclerView.ViewHolder(itemView) {
inner class RecyclerViewAdapter :
RecyclerView.Adapter() {
diff --git a/app/src/main/java/top/fumiama/copymanga/ui/home/HomeHandler.kt b/app/src/main/java/top/fumiama/copymanga/ui/home/HomeHandler.kt
index 9155d91..d10766f 100644
--- a/app/src/main/java/top/fumiama/copymanga/ui/home/HomeHandler.kt
+++ b/app/src/main/java/top/fumiama/copymanga/ui/home/HomeHandler.kt
@@ -20,16 +20,17 @@ import com.to.aboomy.pager2banner.ScaleInTransformer
import kotlinx.android.synthetic.main.card_book.view.*
import kotlinx.android.synthetic.main.fragment_home.*
import kotlinx.android.synthetic.main.line_1bookline.view.*
+import top.fumiama.copymanga.MainActivity.Companion.mainWeakReference
import top.fumiama.dmzj.copymanga.R
import top.fumiama.copymanga.json.ComicStructure
import top.fumiama.copymanga.json.IndexStructure
-import top.fumiama.copymanga.template.AutoDownloadHandler
-import top.fumiama.copymanga.tools.CMApi
-import top.fumiama.copymanga.tools.UITools
+import top.fumiama.copymanga.template.http.AutoDownloadHandler
+import top.fumiama.copymanga.tools.api.CMApi
+import top.fumiama.copymanga.tools.api.UITools
import java.lang.Thread.sleep
import java.lang.ref.WeakReference
-class HomeHandler(that: WeakReference) :AutoDownloadHandler(
+class HomeHandler(that: WeakReference) : AutoDownloadHandler(
that.get()?.getString(R.string.mainPageApiUrl) ?: "",
IndexStructure::class.java,
Looper.myLooper()!!,
@@ -83,10 +84,12 @@ class HomeHandler(that: WeakReference) :AutoDownloadHandler(
}
override fun onError() {
super.onError()
+ if(exit) return
Toast.makeText(homeF?.context, R.string.web_error, Toast.LENGTH_SHORT).show()
}
override fun doWhenFinishDownload() {
super.doWhenFinishDownload()
+ if(exit) return
try {
Thread {
sendEmptyMessage(7) //inflateBanner
@@ -147,7 +150,9 @@ class HomeHandler(that: WeakReference) :AutoDownloadHandler(
comics += book.comic
}
}
- if(comics.size == 9) allocateLine(homeF?.getString(R.string.rank_list)?:"", R.drawable.img_novel_bill, comics)
+ if(comics.size == 9) allocateLine(homeF?.getString(R.string.rank_list)?:"", R.drawable.img_novel_bill, comics) {
+ mainWeakReference?.get()?.navController?.navigate(R.id.nav_rank)
+ }
}
private fun inflateHot(){
@@ -305,7 +310,7 @@ class HomeHandler(that: WeakReference) :AutoDownloadHandler(
private fun setCards(cv: CardView, pw: String, name: String, img: String, isFinal: Boolean, isTopic: Boolean) {
cv.tic.text = name
homeF?.let {
- Glide.with(it).load(GlideUrl(img, CMApi.myGlideHeaders)).timeout(10000).into(cv.imic)
+ Glide.with(it).load(GlideUrl(img, CMApi.myGlideHeaders)).timeout(20000).into(cv.imic)
}
if (isFinal) cv.sgnic.visibility = View.VISIBLE
cv.setOnClickListener {
diff --git a/app/src/main/java/top/fumiama/copymanga/ui/latest/LatestFragment.kt b/app/src/main/java/top/fumiama/copymanga/ui/latest/LatestFragment.kt
deleted file mode 100644
index 78a511a..0000000
--- a/app/src/main/java/top/fumiama/copymanga/ui/latest/LatestFragment.kt
+++ /dev/null
@@ -1,10 +0,0 @@
-package top.fumiama.copymanga.ui.latest
-
-import androidx.fragment.app.Fragment
-import top.fumiama.dmzj.copymanga.R
-import top.fumiama.copymanga.template.InfoCardLoader
-
-@ExperimentalStdlibApi
-class LatestFragment: Fragment()/*InfoCardLoader(R.layout.line_lazybooklines, R.id.action_nav_latest_to_nav_book, "name", "cover", "id") {
- override fun getApiUrl() = getString(R.string.recentUpdateApiUrl).let { String.format(it, page) }
-}*/
\ No newline at end of file
diff --git a/app/src/main/java/top/fumiama/copymanga/ui/rank/RankFragment.kt b/app/src/main/java/top/fumiama/copymanga/ui/rank/RankFragment.kt
deleted file mode 100644
index 5eacb4e..0000000
--- a/app/src/main/java/top/fumiama/copymanga/ui/rank/RankFragment.kt
+++ /dev/null
@@ -1,93 +0,0 @@
-package top.fumiama.copymanga.ui.rank
-
-import androidx.core.content.ContextCompat
-import androidx.fragment.app.Fragment
-import com.github.zawadz88.materialpopupmenu.popupMenu
-import com.google.gson.Gson
-import kotlinx.android.synthetic.main.anchor_popular.view.*
-import top.fumiama.dmzj.copymanga.R
-import top.fumiama.copymanga.json.FilterStructure
-import top.fumiama.copymanga.template.InfoCardLoader
-import java.lang.Thread.sleep
-
-@ExperimentalStdlibApi
-class RankFragment: Fragment()/*: InfoCardLoader(R.layout.fragment_rank, R.id.action_nav_rank_to_nav_book, "name", "cover", "id") {
- private var type = 0
- private var pop_sub = 0
- private var filter: Array? = null
- get() {
- if (field == null) {
- context?.assets?.open(getString(R.string.assets_filter))?.let {
- field = Gson().fromJson(it.reader(), Array::class.java)
- it.close()
- }
- }
- return field
- }
-
- override fun getApiUrl() =
- getString(R.string.rankApiUrl).let { String.format(it, pop_sub, type, page) }
-
- override fun setListeners() {
- super.setListeners()
- setPop()
- setClasses()
- }
-
- private fun setPop(){
- line_rank_pop.apt.setText(if(pop_sub == 1) R.string.menu_pop_sub else R.string.menu_pop_pop)
- line_rank_pop.setOnClickListener {
- val popupMenu = popupMenu {
- style = R.style.Widget_MPM_Menu_Dark_CustomBackground
- section {
- item {
- labelRes = if(pop_sub == 0) R.string.menu_pop_sub else R.string.menu_pop_pop
- labelColor = it.apt.currentTextColor
- iconDrawable =
- this@RankFragment.context?.let { it1 -> ContextCompat.getDrawable(it1, R.drawable.ic_refresh) } //optional
- iconColor = it.apt.currentTextColor
- callback = { //optional
- if(pop_sub == 0){
- pop_sub = 1
- it.apt.setText(R.string.menu_pop_sub)
- }else{
- pop_sub = 0
- it.apt.setText(R.string.menu_pop_pop)
- }
- Thread{
- sleep(400)
- mh?.sendEmptyMessage(4)
- }.start()
- }
- }
- }
- }
- this.context?.let { it1 -> popupMenu.show(it1, it) }
- }
- }
-
- private fun setClasses(){
- val items = filter?.get(0)?.items
- line_rank_class.apt.text = items?.get(0)?.tag_name?:getString(R.string.text_null)
- line_rank_class.setOnClickListener {
- val popupMenu = popupMenu {
- style = R.style.Widget_MPM_Menu_Dark_CustomBackground
- if(items != null) section {
- for(i in items.indices) item {
- label = items[i]?.tag_name
- labelColor = it.apt.currentTextColor
- callback = { //optional
- it.apt.text = label
- type = items[i]?.tag_id?:0
- Thread{
- sleep(400)
- mh?.sendEmptyMessage(4)
- }.start()
- }
- }
- }
- }
- this.context?.let { it1 -> popupMenu.show(it1, it) }
- }
- }
-}*/
\ No newline at end of file
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 b868b03..d986ec0 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,12 +1,7 @@
package top.fumiama.copymanga.ui.settings
-import android.os.Bundle
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import androidx.fragment.app.Fragment
import top.fumiama.dmzj.copymanga.R
-import top.fumiama.copymanga.template.NoBackRefreshFragment
+import top.fumiama.copymanga.template.general.NoBackRefreshFragment
-class SettingsFragment:NoBackRefreshFragment(R.layout.fragment_settings) {
+class SettingsFragment: NoBackRefreshFragment(R.layout.fragment_settings) {
}
\ No newline at end of file
diff --git a/app/src/main/java/top/fumiama/copymanga/ui/sub/SubFragment.kt b/app/src/main/java/top/fumiama/copymanga/ui/sub/SubFragment.kt
index 1fccdfc..add5393 100644
--- a/app/src/main/java/top/fumiama/copymanga/ui/sub/SubFragment.kt
+++ b/app/src/main/java/top/fumiama/copymanga/ui/sub/SubFragment.kt
@@ -5,7 +5,6 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
-import kotlinx.android.synthetic.main.fragment_sub.*
import top.fumiama.dmzj.copymanga.R
class SubFragment : Fragment() {
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 37d9045..df650cc 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
@@ -15,8 +15,8 @@ import top.fumiama.dmzj.copymanga.R
import top.fumiama.copymanga.json.Chapter2Return
import top.fumiama.copymanga.json.ChapterWithContent
import top.fumiama.copymanga.json.ComicStructure
-import top.fumiama.copymanga.template.AutoDownloadHandler
-import top.fumiama.copymanga.tools.PropertiesTools
+import top.fumiama.copymanga.template.http.AutoDownloadHandler
+import top.fumiama.copymanga.tools.file.PropertiesTools
import top.fumiama.copymanga.ui.vm.ViewMangaActivity.Companion.comicName
import top.fumiama.copymanga.ui.vm.ViewMangaActivity.Companion.pn
import top.fumiama.copymanga.views.ScaleImageView
@@ -113,12 +113,14 @@ class VMHandler(activity: ViewMangaActivity, url: String) : AutoDownloadHandler(
}
override fun onError() {
super.onError()
+ if(exit) return
wv.get()?.toolsBox?.toastError("下载章节信息失败")
}
@ExperimentalStdlibApi
override fun doWhenFinishDownload() {
super.doWhenFinishDownload()
+ if(exit) return
prepareManga()
}
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 6549f49..b6f9086 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
@@ -27,10 +27,10 @@ import kotlinx.android.synthetic.main.widget_titlebar.*
import kotlinx.android.synthetic.main.widget_titlebar.view.*
import kotlinx.android.synthetic.main.widget_viewmangainfo.*
import top.fumiama.dmzj.copymanga.R
-import top.fumiama.copymanga.template.TitleActivityTemplate
-import top.fumiama.copymanga.tools.CMApi
-import top.fumiama.copymanga.tools.DownloadTools
-import top.fumiama.copymanga.tools.TimeThread
+import top.fumiama.copymanga.template.general.TitleActivityTemplate
+import top.fumiama.copymanga.tools.api.CMApi
+import top.fumiama.copymanga.tools.http.DownloadTools
+import top.fumiama.copymanga.tools.thread.TimeThread
import top.fumiama.copymanga.views.ScaleImageView
import java.io.ByteArrayInputStream
import java.io.ByteArrayOutputStream
@@ -399,6 +399,7 @@ class ViewMangaActivity : TitleActivityTemplate() {
dlhandler?.sendEmptyMessage(0)
tt.canDo = false
dlhandler = null
+ handler.destroy()
super.onDestroy()
}
diff --git a/app/src/main/java/top/fumiama/copymanga/update/SimpleKanban.kt b/app/src/main/java/top/fumiama/copymanga/update/SimpleKanban.kt
index 293e0ea..68f0fba 100644
--- a/app/src/main/java/top/fumiama/copymanga/update/SimpleKanban.kt
+++ b/app/src/main/java/top/fumiama/copymanga/update/SimpleKanban.kt
@@ -16,6 +16,7 @@ class SimpleKanban(private val client: Client, private val pwd: String) { //mu
try {
firstRecv = client.receiveRawMessage(4) //le
val length = convert2Int(firstRecv)
+ Log.d("MySK", "Msg len: $length")
if(firstRecv.size > 4) re += firstRecv.copyOfRange(4, firstRecv.size)
re += client.receiveRawMessage(length - re.size, setProgress = true)
break
@@ -53,6 +54,7 @@ class SimpleKanban(private val client: Client, private val pwd: String) { //mu
if(firstRecv.decodeToString() == "null") "null"
else {
val length = convert2Int(firstRecv)
+ Log.d("MySK", "Msg len: $length")
var re = byteArrayOf()
if(firstRecv.size > 4) re += firstRecv.copyOfRange(4, firstRecv.size)
re += client.receiveRawMessage(length - re.size)
diff --git a/app/src/main/java/top/fumiama/copymanga/update/Update.kt b/app/src/main/java/top/fumiama/copymanga/update/Update.kt
index 375e862..4fa2c17 100644
--- a/app/src/main/java/top/fumiama/copymanga/update/Update.kt
+++ b/app/src/main/java/top/fumiama/copymanga/update/Update.kt
@@ -8,8 +8,8 @@ import android.util.Log
import android.widget.Toast
import androidx.core.content.FileProvider
import kotlinx.android.synthetic.main.dialog_progress.view.*
-import top.fumiama.copymanga.tools.PropertiesTools
-import top.fumiama.copymanga.tools.UITools
+import top.fumiama.copymanga.tools.file.PropertiesTools
+import top.fumiama.copymanga.tools.api.UITools
import top.fumiama.dmzj.copymanga.R
import java.io.File
import java.security.MessageDigest
diff --git a/app/src/main/res/layout/fragment_rank.xml b/app/src/main/res/layout/fragment_rank.xml
index 47b79f9..3b8799f 100644
--- a/app/src/main/res/layout/fragment_rank.xml
+++ b/app/src/main/res/layout/fragment_rank.xml
@@ -4,11 +4,11 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
- tools:context="top.fumiama.copymanga.ui.rank.RankFragment">
+ tools:context="top.fumiama.copymanga.ui.cardflow.rank.RankFragment">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/navigation/mobile_navigation.xml b/app/src/main/res/navigation/mobile_navigation.xml
index 8f12628..9937e66 100644
--- a/app/src/main/res/navigation/mobile_navigation.xml
+++ b/app/src/main/res/navigation/mobile_navigation.xml
@@ -10,13 +10,6 @@
android:name="top.fumiama.copymanga.ui.home.HomeFragment"
android:label="@string/menu_home"
tools:layout="@layout/fragment_home" >
-
-
-
-
-
获取图书信息失败
网络错误
- https://api.copymanga.com/api/v3/h5/homeIndex
+ https://api.copymanga.com/api/v3/h5/homeIndex?platform=3
"https://api.copymanga.com"
https://nnv3api.dmzj1.com/novel/recentUpdate/%1$d.json
- https://nnv3api.dmzj1.com/novel/rank/%1$d/%2$d/%3$d.json
- https://api.copymanga.com/api/v3/h5/filterIndex/comic/tags
- https://api.copymanga.com/api/v3/comics?limit=21&offset=%1$d&ordering=%2$s&theme=%3$s
- https://api.copymanga.com/api/v3/comic2/%1$s
- https://api.copymanga.com/api/v3/comic/%1$s/group/%2$s/chapters?limit=100&offset=%3$d
- https://api.copymanga.com/api/v3/comic/%1$s/chapter2/%2$s
+ https://api.copymanga.com/api/v3/ranks?limit=21&offset=%1$d&date_type=%2$s&platform=3
+ https://api.copymanga.com/api/v3/h5/filterIndex/comic/tags?platform=3
+ https://api.copymanga.com/api/v3/comics?limit=21&offset=%1$d&ordering=%2$s&theme=%3$s&platform=3
+ https://api.copymanga.com/api/v3/comic2/%1$s?platform=3
+ https://api.copymanga.com/api/v3/comic/%1$s/group/%2$s/chapters?limit=100&offset=%3$d&platform=3
+ https://api.copymanga.com/api/v3/comic/%1$s/chapter2/%2$s?platform=3
https://nnv3api.dmzj1.com/novel/download/%1$d_%2$d_%3$d.txt
- https://api.copymanga.com/api/v3/topic/%1$s
- https://api.copymanga.com/api/v3/topic/%1$s/contents?type=%2$d&limit=21&offset=%3$d
- https://api.copymanga.com/api/v3/recs?pos=3200102&limit=21&offset=%1$d
- https://api.copymanga.com/api/v3/update/newest?limit=21&offset=%1$d
- https://api.copymanga.com/api/v3/comics?limit=21&offset=%1$d&ordering=%2$s&top=finish
+ https://api.copymanga.com/api/v3/topic/%1$s?platform=3
+ https://api.copymanga.com/api/v3/topic/%1$s/contents?type=%2$d&limit=21&offset=%3$d&platform=3
+ https://api.copymanga.com/api/v3/recs?pos=3200102&limit=21&offset=%1$d&platform=3
+ https://api.copymanga.com/api/v3/update/newest?limit=21&offset=%1$d&platform=3
+ https://api.copymanga.com/api/v3/comics?limit=21&offset=%1$d&ordering=%2$s&top=finish&platform=3
已完结
@@ -70,4 +70,9 @@
排行榜 ☟日周月 ☛冠亚季
热门更新
全新上架
+
+ 上升最快
+ 近七天
+ 近三十天
+ 总榜单
\ No newline at end of file