diff --git a/.idea/misc.xml b/.idea/misc.xml
index b85b19c..905a8f2 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -11,23 +11,32 @@
+
+
+
+
+
+
+
+
+
@@ -35,7 +44,10 @@
+
+
+
diff --git a/app/src/main/java/top/fumiama/copymanga/MainActivity.kt b/app/src/main/java/top/fumiama/copymanga/MainActivity.kt
index 17859fe..3284ed7 100644
--- a/app/src/main/java/top/fumiama/copymanga/MainActivity.kt
+++ b/app/src/main/java/top/fumiama/copymanga/MainActivity.kt
@@ -39,16 +39,19 @@ 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.api.UITools
+import top.fumiama.copymanga.ui.book.BookFragment.Companion.bookHandler
+import top.fumiama.copymanga.ui.comicdl.ComicDlFragment
import top.fumiama.copymanga.ui.download.DownloadFragment
import top.fumiama.copymanga.update.Update
import java.io.File
import java.io.FileInputStream
+import java.lang.Thread.sleep
import java.lang.ref.WeakReference
class MainActivity : AppCompatActivity() {
var isDrawerClosed = true
- var menuMain: Menu? = null
- var navController: NavController? = null
+ private var menuMain: Menu? = null
+ private var navController: NavController? = null
private lateinit var appBarConfiguration: AppBarConfiguration
private lateinit var headPic: File
@@ -102,6 +105,40 @@ class MainActivity : AppCompatActivity() {
checkUpdate(false)
ime = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
+
+ navController!!.addOnDestinationChangedListener { _, destination, _ ->
+ Thread {
+ sleep(1000)
+ runOnUiThread {
+ when (destination.id) {
+ R.id.nav_home -> {
+ Log.d("MyMA", "enter home")
+ menuMain?.findItem(R.id.action_info)?.isVisible = true
+ menuMain?.findItem(R.id.action_download)?.isVisible = false
+ menuMain?.findItem(R.id.action_sort)?.isVisible = false
+ }
+ R.id.nav_book -> {
+ Log.d("MyMA", "enter book")
+ menuMain?.findItem(R.id.action_info)?.isVisible = false
+ menuMain?.findItem(R.id.action_download)?.isVisible = true
+ menuMain?.findItem(R.id.action_sort)?.isVisible = false
+ }
+ R.id.nav_group -> {
+ Log.d("MyMA", "enter group")
+ menuMain?.findItem(R.id.action_info)?.isVisible = false
+ menuMain?.findItem(R.id.action_download)?.isVisible = false
+ menuMain?.findItem(R.id.action_sort)?.isVisible = true
+ }
+ else -> {
+ Log.d("MyMA", "enter others")
+ menuMain?.findItem(R.id.action_info)?.isVisible = false
+ menuMain?.findItem(R.id.action_download)?.isVisible = false
+ menuMain?.findItem(R.id.action_sort)?.isVisible = false
+ }
+ }
+ }
+ }.start()
+ }
}
override fun onCreateOptionsMenu(menu: Menu): Boolean {
@@ -111,6 +148,24 @@ class MainActivity : AppCompatActivity() {
return true
}
+ override fun onOptionsItemSelected(item: MenuItem): Boolean {
+ return when (item.itemId) {
+ R.id.action_info -> {
+ showAbout()
+ true
+ }
+ R.id.action_download -> {
+ bookHandler?.sendEmptyMessage(6)
+ true
+ }
+ R.id.action_sort -> {
+ ComicDlFragment.handler?.sendEmptyMessage(13)
+ true
+ }
+ else -> super.onOptionsItemSelected(item)
+ }
+ }
+
override fun onSupportNavigateUp(): Boolean {
val navController = findNavController(R.id.nav_host_fragment)
@@ -250,7 +305,7 @@ class MainActivity : AppCompatActivity() {
}.start()
}
- fun showAbout(item: MenuItem) {
+ private fun showAbout() {
val dl = android.app.AlertDialog.Builder(this)
dl.setMessage(R.string.app_description)
dl.setTitle(R.string.action_info)
diff --git a/app/src/main/java/top/fumiama/copymanga/template/general/NoBackRefreshFragment.kt b/app/src/main/java/top/fumiama/copymanga/template/general/NoBackRefreshFragment.kt
index 86e09b7..e90ccf5 100644
--- a/app/src/main/java/top/fumiama/copymanga/template/general/NoBackRefreshFragment.kt
+++ b/app/src/main/java/top/fumiama/copymanga/template/general/NoBackRefreshFragment.kt
@@ -1,6 +1,7 @@
package top.fumiama.copymanga.template.general
import android.os.Bundle
+import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
@@ -17,7 +18,11 @@ open class NoBackRefreshFragment(private val layoutToLoad: Int):Fragment() {
if(rootView == null){
isFirstInflate = true
rootView = inflater.inflate(layoutToLoad, container, false)
- } else isFirstInflate = false
+ Log.d("MyNBRF", "is first inflate")
+ } else {
+ isFirstInflate = false
+ Log.d("MyNBRF", "not first inflate")
+ }
return rootView
}
override fun onDestroyView() {
diff --git a/app/src/main/java/top/fumiama/copymanga/template/http/AutoDownloadHandler.kt b/app/src/main/java/top/fumiama/copymanga/template/http/AutoDownloadHandler.kt
index 66250dd..3d4042f 100644
--- a/app/src/main/java/top/fumiama/copymanga/template/http/AutoDownloadHandler.kt
+++ b/app/src/main/java/top/fumiama/copymanga/template/http/AutoDownloadHandler.kt
@@ -41,8 +41,12 @@ open class AutoDownloadHandler(private val url: String, private val jsonClass: C
timeThread?.start()
}
private fun dlThread() {
- DownloadTools.getHttpContent(url, null, mainWeakReference?.get()?.getString(R.string.pc_ua)!!)?.let {
+ DownloadTools.getHttpContent(url, null, mainWeakReference?.get()?.getString(R.string.pc_ua)!!).let {
if(exit) return
+ if(it == null) {
+ dlThread()
+ return
+ }
val fi = it.inputStream()
var pass = true
try {
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 d33f804..538a6c7 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
@@ -62,11 +62,11 @@ class DownloadPool(folder: String) {
for(index in imgUrls.indices) {
while (wait && !exit) sleep(1000)
if(exit) break
- zip.putNextEntry(ZipEntry("$index.jpg"))
+ zip.putNextEntry(ZipEntry("$index.${if(imgUrls[index].contains(".webp")) "webp" else "jpg"}"))
var tryTimes = 3
var s = false
while (!s && tryTimes-- > 0){
- s = (DownloadTools.getHttpContent(imgUrls[index], -1, refer)) ?.let { zip.write(it); true }?:false
+ s = (DownloadTools.getHttpContent(imgUrls[index], -1))?.let { zip.write(it); true }?:false
if (!s) sleep(2000)
}
if(!s && tryTimes <= 0) {
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 6224c72..b0c1182 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
@@ -4,30 +4,13 @@ import android.content.Context
import android.util.Log
import androidx.preference.PreferenceManager
import top.fumiama.copymanga.MainActivity
-import top.fumiama.copymanga.tools.ssl.AllTrustManager
-import top.fumiama.copymanga.tools.ssl.IgnoreHostNameVerifier
import java.net.HttpURLConnection
import java.net.URL
-import java.net.URLEncoder
-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 getConnection(url: String?, method: String = "GET", refer: String? = null, ua: String? = null) =
url?.let {
val connection = URL(url).openConnection() as HttpURLConnection
@@ -35,6 +18,7 @@ object DownloadTools {
connection.connectTimeout = 20000
connection.readTimeout = 20000
connection.apply {
+ setRequestProperty("host", url.substringAfter("://").substringBefore("/"))
ua?.let { setRequestProperty("user-agent", it) }
refer?.let { setRequestProperty("referer", it) }
setRequestProperty("source", "copyApp")
@@ -51,11 +35,22 @@ object DownloadTools {
}
}
}
- setRequestProperty("host", url.substringAfter("://").substringBefore("/"))
setRequestProperty("platform", "3")
}
}
+ private fun getNormalConnection(url: String?, method: String = "GET", ua: String? = null) =
+ url?.let {
+ val connection = URL(url).openConnection() as HttpURLConnection
+ connection.requestMethod = method
+ connection.connectTimeout = 20000
+ connection.readTimeout = 20000
+ connection.apply {
+ setRequestProperty("host", url.substringAfter("://").substringBefore("/"))
+ ua?.let { setRequestProperty("user-agent", it) }
+ }
+ }
+
fun getHttpContent(Url: String, refer: String? = null, ua: String? = null): ByteArray? {
Log.d("Mydl", "getHttp: $Url")
var ret: ByteArray? = null
@@ -79,16 +74,12 @@ object DownloadTools {
}
}
- fun getHttpContent(Url: String, readSize: Int, refer: String? = "https://api.copymanga.com"): ByteArray? {
+ fun getHttpContent(Url: String, readSize: Int): ByteArray? {
Log.d("Mydl", "getHttp: $Url")
var ret: ByteArray? = null
val task = FutureTask(Callable {
try {
- val connection = getConnection(Url, "GET", refer)?.apply {
- ret = inputStream.readBytes()
- disconnect()
- }
-
+ val connection = getNormalConnection(Url, "GET")
val ci = connection?.inputStream
if(readSize > 0) {
ret = ByteArray(readSize)
@@ -110,16 +101,13 @@ object DownloadTools {
}
}
- fun touch(url: String?, refer: String? = "https://api.copymanga.com"): FutureTask? =
+ fun touch(url: String?): FutureTask? =
url?.let {
Log.d("Mydl", "touchHttp: $it")
var ret: ByteArray? = null
val task = FutureTask(Callable {
try {
- val connection = getConnection(it, "GET", refer)?.apply {
- ret = inputStream.readBytes()
- disconnect()
- }
+ val connection = getNormalConnection(it, "GET")
val ci = connection?.inputStream
ret = ci?.readBytes()
@@ -134,10 +122,10 @@ object DownloadTools {
task
}
- private fun replaceChineseCharacters(string: String?) : String? {
+ /*private fun replaceChineseCharacters(string: String?) : String? {
if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.M) return string
else return string?.replace(Regex("(?<=/)[\\w\\s\\d\\u4e00-\\u9fa5.-]+(?=/?)")) { match ->
return@replace URLEncoder.encode(match.value, "UTF-8")
}
- }
-}
\ No newline at end of file
+ }*/
+}
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
deleted file mode 100644
index 157e756..0000000
--- a/app/src/main/java/top/fumiama/copymanga/tools/ssl/AllTrustManager.java
+++ /dev/null
@@ -1,17 +0,0 @@
-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
deleted file mode 100644
index 08c6578..0000000
--- a/app/src/main/java/top/fumiama/copymanga/tools/ssl/IgnoreHostNameVerifier.java
+++ /dev/null
@@ -1,11 +0,0 @@
-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/ui/book/BookFragment.kt b/app/src/main/java/top/fumiama/copymanga/ui/book/BookFragment.kt
index 5ef9c40..6d2c26d 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
@@ -2,9 +2,9 @@ package top.fumiama.copymanga.ui.book
import android.content.Context.MODE_PRIVATE
import android.os.Bundle
-import android.util.Log
-import android.view.Menu
+import android.view.LayoutInflater
import android.view.View
+import android.view.ViewGroup
import androidx.navigation.Navigation
import kotlinx.android.synthetic.main.app_bar_main.*
import kotlinx.android.synthetic.main.line_booktandb.*
@@ -16,7 +16,9 @@ import java.lang.Thread.sleep
import java.lang.ref.WeakReference
class BookFragment: NoBackRefreshFragment(R.layout.fragment_book) {
- private lateinit var bookHandler: BookHandler
+ var fbibinfo: View? = null
+ var fbtinfo: View? = null
+
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
@@ -24,7 +26,7 @@ class BookFragment: NoBackRefreshFragment(R.layout.fragment_book) {
bookHandler = BookHandler(WeakReference(this), arguments?.getString("path")?:"null")
Thread{
sleep(600)
- bookHandler.startLoad()
+ bookHandler?.startLoad()
}.start()
}
}
@@ -32,35 +34,29 @@ class BookFragment: NoBackRefreshFragment(R.layout.fragment_book) {
override fun onResume() {
super.onResume()
mainWeakReference?.get()?.apply {
- menuMain?.let { setMenuVisible(it) }
- toolbar.title = bookHandler.book?.results?.comic?.name
+ toolbar.title = bookHandler?.book?.results?.comic?.name
}
setStartRead()
- bookHandler.fbibinfo?.layoutParams?.height = ((bookHandler.fbibinfo?.width?:0) * 4.0 / 9.0 + 0.5).toInt()
+ fbibinfo?.layoutParams?.height = ((fbibinfo?.width?:0) * 4.0 / 9.0 + 0.5).toInt()
}
override fun onDestroy() {
super.onDestroy()
- mainWeakReference?.get()?.menuMain?.let { setMenuInvisible(it) }
- bookHandler.destroy()
- bookHandler.ads.forEach {
+ bookHandler?.destroy()
+ bookHandler?.ads?.forEach {
it.exit = true
}
- }
-
- override fun onPause() {
- super.onPause()
- mainWeakReference?.get()?.menuMain?.let { setMenuInvisible(it) }
+ bookHandler = null
}
fun setStartRead() {
- if(bookHandler.chapterNames.isNotEmpty()) mainWeakReference?.get()?.apply {
- bookHandler.book?.results?.comic?.name?.let { name ->
+ if(bookHandler?.chapterNames?.isNotEmpty() == true) mainWeakReference?.get()?.apply {
+ bookHandler?.book?.results?.comic?.name?.let { name ->
getPreferences(MODE_PRIVATE).getInt(name, -1).let { p ->
this@BookFragment.lbbstart.apply {
var i = 0
if(p >= 0) {
- text = bookHandler.chapterNames[p]
+ text = bookHandler!!.chapterNames[p]
i = p
}
setOnClickListener {
@@ -72,34 +68,20 @@ class BookFragment: NoBackRefreshFragment(R.layout.fragment_book) {
}
}
- private fun setMenuInvisible(menu: Menu){
- menu.findItem(R.id.action_download)?.isVisible = false
- }
-
- private fun setMenuVisible(menu: Menu) {
- Log.d("MyBF", "显示下载按钮")
- val dl = menu.findItem(R.id.action_download)
- dl?.isVisible = true
- dl?.setIcon(R.drawable.ic_menu_download)
- dl?.setOnMenuItemClickListener {
- if(bookHandler.complete && it.itemId == R.id.action_download){
- navigate2dl()
- true
- }
- else it.itemId == R.id.action_download
- }
- }
-
- private fun navigate2dl(){
+ fun navigate2dl(){
val bundle = Bundle()
bundle.putString("path", arguments?.getString("path")?:"null")
- bundle.putString("name", bookHandler.book?.results?.comic?.name)
- if(bookHandler.vols != null) {
+ bundle.putString("name", bookHandler!!.book?.results?.comic?.name)
+ if(bookHandler!!.vols != null) {
bundle.putBoolean("loadJson", true)
}
- bundle.putStringArray("group", bookHandler.gpws)
- bundle.putStringArray("groupNames", bookHandler.keys)
- bundle.putIntArray("count", bookHandler.cnts)
+ bundle.putStringArray("group", bookHandler!!.gpws)
+ bundle.putStringArray("groupNames", bookHandler!!.keys)
+ bundle.putIntArray("count", bookHandler!!.cnts)
rootView?.let { Navigation.findNavController(it).navigate(R.id.action_nav_book_to_nav_group, bundle) }
}
+
+ companion object {
+ var bookHandler: BookHandler? = null
+ }
}
\ No newline at end of file
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 801308b..12d58fc 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
@@ -1,7 +1,5 @@
package top.fumiama.copymanga.ui.book
-import android.content.Context.MODE_PRIVATE
-import android.content.Intent
import android.os.Bundle
import android.os.Looper
import android.os.Message
@@ -44,12 +42,12 @@ import java.io.File
import java.lang.Thread.sleep
import java.lang.ref.WeakReference
-class BookHandler(that: WeakReference, private val path: String)
+class BookHandler(private val th: WeakReference, private val path: String)
: AutoDownloadHandler(
- that.get()?.getString(R.string.bookInfoApiUrl)?.let { String.format(it, path) } ?: "",
+ th.get()?.getString(R.string.bookInfoApiUrl)?.let { String.format(it, path) } ?: "",
BookInfoStructure::class.java,
Looper.myLooper()!!){
- private val that = that.get()
+ private val that get() = th.get()
private var hasToastedError = false
get(){
val re = field
@@ -57,7 +55,6 @@ class BookHandler(that: WeakReference, private val path: String)
return re
}
var book: BookInfoStructure? = null
- var fbibinfo:View? = null
var complete = false
var ads = emptyArray()
var gpws = arrayOf()
@@ -65,8 +62,7 @@ class BookHandler(that: WeakReference, private val path: String)
var cnts = intArrayOf()
var vols: Array? = null
var chapterNames = arrayOf()
- private val divider get() = that?.layoutInflater?.inflate(R.layout.div_h, that.fbl, false)
- private var fbtinfo: View? = null
+ private val divider get() = that?.layoutInflater?.inflate(R.layout.div_h, that?.fbl, false)
override fun handleMessage(msg: Message) {
super.handleMessage(msg)
@@ -74,9 +70,10 @@ class BookHandler(that: WeakReference, private val path: String)
//0 -> setLayouts()
1 -> setCover()
2 -> setTexts()
- 3 -> fbibinfo?.let { setInfoHeight(it) }
+ 3 -> that?.fbibinfo?.let { setInfoHeight(it) }
4 -> setThemes()
5 -> setOverScale()
+ 6 -> if(complete) that?.navigate2dl()
}
}
@@ -120,12 +117,12 @@ class BookHandler(that: WeakReference, private val path: String)
}
private fun inflateComponents(){
- fbibinfo = that?.layoutInflater?.inflate(R.layout.line_bookinfo, that.fbl, false)
- fbtinfo = that?.layoutInflater?.inflate(R.layout.line_text_info, that.fbl, false)
+ that?.fbibinfo = that?.layoutInflater?.inflate(R.layout.line_bookinfo, that?.fbl, false)
+ that?.fbtinfo = that?.layoutInflater?.inflate(R.layout.line_text_info, that?.fbl, false)
}
private fun setOverScale(){
- that?.fbov?.setScaleView(that.lbibg)
+ that?.fbov?.setScaleView(that!!.lbibg)
}
private fun setCover(){
@@ -164,8 +161,8 @@ class BookHandler(that: WeakReference, private val path: String)
book?.results?.comic?.status?.display
) }?:""
that?.bttime?.text = book?.results?.comic?.datetime_updated
- (fbtinfo as TextView).text = book?.results?.comic?.brief
- that?.fbl?.addView(fbtinfo)
+ (that?.fbtinfo as TextView).text = book?.results?.comic?.brief
+ that?.fbl?.addView(that?.fbtinfo)
that?.fbl?.addView(divider)
}
@@ -190,7 +187,7 @@ class BookHandler(that: WeakReference, private val path: String)
themeStructure.onEachIndexed { i, it ->
if(line == null) {
if(i == last) {
- line = that?.layoutInflater?.inflate(R.layout.line_chapter, that.fbl, false)
+ line = that?.layoutInflater?.inflate(R.layout.line_chapter, that!!.fbl, false)
line?.lcc?.apply {
lct.text = it.name
setOnClickListener { _ ->
@@ -199,7 +196,7 @@ class BookHandler(that: WeakReference, private val path: String)
}
that?.fbl?.addView(line)
} else {
- line = that?.layoutInflater?.inflate(R.layout.line_2chapters, that.fbl, false)
+ line = that?.layoutInflater?.inflate(R.layout.line_2chapters, that!!.fbl, false)
line?.l2cl?.apply {
lct.text = it.name
setOnClickListener { _ ->
@@ -250,14 +247,14 @@ class BookHandler(that: WeakReference, private val path: String)
chapterNames += it.name
if(line == null) {
if(i == last) {
- line = layoutInflater.inflate(R.layout.line_chapter, that.fbl, false)
+ line = layoutInflater.inflate(R.layout.line_chapter, that!!.fbl, false)
line?.lcc?.apply {
lct.text = it.name
setOnClickListener { Reader.viewMangaAt(book!!.results.comic.name, i) }
}
fbl?.addView(line)
} else {
- line = layoutInflater.inflate(R.layout.line_2chapters, that.fbl, false)
+ line = layoutInflater.inflate(R.layout.line_2chapters, that!!.fbl, false)
line?.l2cl?.apply {
lct.text = it.name
setOnClickListener { Reader.viewMangaAt(book!!.results.comic.name, i) }
@@ -271,11 +268,6 @@ class BookHandler(that: WeakReference, private val path: String)
}
}
}
- // padding
- val line = layoutInflater.inflate(R.layout.line_chapter, that.fbl, false)
- line.lci.visibility = View.INVISIBLE
- line.isClickable = false
- fbl?.addView(line)
endSetLayouts()
}
}
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
deleted file mode 100644
index ec8e03c..0000000
--- a/app/src/main/java/top/fumiama/copymanga/ui/chapter/ChapterFragment.kt
+++ /dev/null
@@ -1,27 +0,0 @@
-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.general.NoBackRefreshFragment
-import java.lang.Thread.sleep
-import java.lang.ref.WeakReference
-
-class ChapterFragment: NoBackRefreshFragment(R.layout.fragment_chapters) {
- var handler: ChapterHandler? = null
- override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
- super.onViewCreated(view, savedInstanceState)
- if(isFirstInflate){
- handler = arguments?.let { ChapterHandler(WeakReference(this), it.getString("path")?:"", it.getString("group")?:"") }
- Thread{
- sleep(600)
- handler?.startLoad()
- }.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
deleted file mode 100644
index b4d2ee2..0000000
--- a/app/src/main/java/top/fumiama/copymanga/ui/chapter/ChapterHandler.kt
+++ /dev/null
@@ -1,84 +0,0 @@
-package top.fumiama.copymanga.ui.chapter
-
-import android.os.Looper
-import android.os.Message
-import android.view.View
-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_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.http.AutoDownloadHandler
-import java.lang.ref.WeakReference
-
-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()
- private var hasToastedError = false
- get(){
- val re = field
- field = true
- return re
- }
- private var chapters: VolumeStructure? = null
-
- override fun handleMessage(msg: Message) {
- super.handleMessage(msg)
- when(msg.what){
- //0 -> setLayouts()
- 1 -> inflateChapters()
- }
-
- }
-
- override fun getGsonItem() = chapters
- override fun setGsonItem(gsonObj: Any) :Boolean {
- val pass = super.setGsonItem(gsonObj)
- chapters = gsonObj as VolumeStructure
- return pass
- }
-
- 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 ->
- Navigation.findNavController(it1).navigateUp()
- }
- }
- }
- override fun doWhenFinishDownload() {
- super.doWhenFinishDownload()
- if(exit) return
- Thread{ sendEmptyMessage(1) }.start()
- }
- private fun inflateChapters(){
-
- that?.fcloading?.visibility = View.GONE
- }
- private fun addLine(size: Int, name:String, onClick:(()->Unit)? = null){
- val line =
- that?.let { it.layoutInflater.inflate(R.layout.line_chapter, it.fbl, false) }
- line?.lct?.text = name
- onClick?.let {action->
- line?.lcc?.setOnClickListener {action()}
- }
- that?.fcl?.addView(line)
- }
- private fun loadChapter(chapter: ChapterStructure){
- /*val bundle = Bundle()
-
- bundle.putInt("id", id)
- bundle.putInt("volume", volId)
- bundle.putInt("chapter", cid)
- that?.rootView?.let { Navigation.findNavController(it).navigate(R.id.action_nav_chapter_to_nav_reader, bundle) }
- */}
-}
\ No newline at end of file
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 dab8c30..7bb491b 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
@@ -18,7 +18,7 @@ import java.lang.Thread.sleep
import java.lang.ref.WeakReference
class ComicDlFragment: NoBackRefreshFragment(R.layout.fragment_dlcomic) {
- var handler: ComicDlHandler? = null
+ var ltbtn: View? = null
var ads = emptyArray()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
@@ -43,7 +43,6 @@ class ComicDlFragment: NoBackRefreshFragment(R.layout.fragment_dlcomic) {
)
}
}
- mainWeakReference?.get()?.menuMain?.let { setMenuVisible(it) }
}
override fun onDestroy() {
@@ -81,19 +80,6 @@ class ComicDlFragment: NoBackRefreshFragment(R.layout.fragment_dlcomic) {
private fun loadFromJson() = Gson().fromJson(json, Array::class.java)
private fun loadGroupsFromFile(file: File) = Gson().fromJson(file.reader(), Array::class.java)
- private fun setMenuVisible(menu: Menu) {
- val dl = menu.findItem(R.id.action_download)
- dl?.isVisible = true
- dl?.setIcon(R.drawable.ic_menu_sort)
- dl?.setOnMenuItemClickListener {
- if(handler?.complete == true && it.itemId == R.id.action_download){
- handler?.showMultiSelectInfo()
- true
- }
- else it.itemId == R.id.action_download
- }
- }
-
/*private fun setMenuInvisible(menu: Menu){
menu.findItem(R.id.action_download)?.isVisible = false
}*/
@@ -167,6 +153,7 @@ class ComicDlFragment: NoBackRefreshFragment(R.layout.fragment_dlcomic) {
}
companion object {
+ var handler: ComicDlHandler? = null
var json: String? = null
var exit = false
}
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 c283563..2b6142a 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
@@ -14,7 +14,6 @@ import android.view.ViewTreeObserver
import android.widget.Toast
import com.google.gson.Gson
import kotlinx.android.synthetic.main.fragment_book.*
-import kotlinx.android.synthetic.main.fragment_chapters.*
import kotlinx.android.synthetic.main.line_chapter.view.*
import kotlinx.android.synthetic.main.widget_downloadbar.*
import kotlinx.android.synthetic.main.fragment_dlcomic.*
@@ -36,14 +35,14 @@ import top.fumiama.copymanga.views.LazyScrollView
import java.io.File
import java.lang.ref.WeakReference
-class ComicDlHandler(looper: Looper, that: WeakReference, private val vols: Array, private val comicName: String, private val groupNames: Array?):Handler(looper) {
- constructor(looper: Looper, that: WeakReference, comicName: String) : this(looper, that, arrayOf(), comicName, null) {
+class ComicDlHandler(looper: Looper, private val th: WeakReference, private val vols: Array, private val comicName: String, private val groupNames: Array?):Handler(looper) {
+ constructor(looper: Looper, th: WeakReference, comicName: String) : this(looper, th, arrayOf(), comicName, null) {
isOld = true
}
private var isOld = false
var complete = false
- private val that = that.get()
- private val toolsBox = UITools(that.get()?.context)
+ private val that get() = th.get()
+ private val toolsBox = UITools(th.get()?.context)
private var btnNumPerRow = 4
private var btnw = 0
private var cdwnWidth = 0
@@ -56,7 +55,6 @@ class ComicDlHandler(looper: Looper, that: WeakReference, priva
private var isNewTitle = false
val mangaDlTools = MangaDlTools()
private var multiSelect = false
- private var ltbtn: View? = null
private var finishMap = arrayOf()
var downloading = false
@@ -95,10 +93,11 @@ class ComicDlHandler(looper: Looper, that: WeakReference, priva
}
6 -> that?.tdwn?.text = "${dldChapter}/${checkedChapter}"
7 -> deleteChapters(msg.obj as File, msg.arg1)
- 9 -> that?.cdwn?.setCardBackgroundColor(that.resources.getColor(R.color.colorGreen))
+ 9 -> that?.cdwn?.setCardBackgroundColor(that!!.resources.getColor(R.color.colorGreen))
10 -> addTbtn(msg.obj as Array)
11 -> addCaption(msg.obj as String)
12 -> addDiv()
+ 13 -> if(complete) showMultiSelectInfo()
}
}
@@ -128,7 +127,7 @@ class ComicDlHandler(looper: Looper, that: WeakReference, priva
}
private fun addDiv(){
that?.ldwn?.addView(
- that.layoutInflater.inflate(R.layout.div_h, that.ldwn, false),
+ that!!.layoutInflater.inflate(R.layout.div_h, that!!.ldwn, false),
ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT
@@ -136,7 +135,7 @@ class ComicDlHandler(looper: Looper, that: WeakReference, priva
)
}
private fun addCaption(title: String){
- val tc = that?.layoutInflater?.inflate(R.layout.line_caption, that.ldwn, false)
+ val tc = that?.layoutInflater?.inflate(R.layout.line_caption, that!!.ldwn, false)
tc?.tcptn?.text = title
that?.ldwn?.addView(
tc,
@@ -191,9 +190,9 @@ class ComicDlHandler(looper: Looper, that: WeakReference, priva
dl?.setContentView(R.layout.dialog_unzipping)
that?.dlsdwn?.viewTreeObserver?.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener{
override fun onGlobalLayout() {
- cdwnWidth = that.dlsdwn.width
+ cdwnWidth = that!!.dlsdwn.width
Log.d("MyDl", "Get dlsdwn height: $cdwnWidth")
- that.dlsdwn.viewTreeObserver.removeOnGlobalLayoutListener(this)
+ that!!.dlsdwn.viewTreeObserver.removeOnGlobalLayoutListener(this)
}
})
that?.dllazys?.onScrollListener = object : LazyScrollView.OnScrollListener{
@@ -204,10 +203,10 @@ class ComicDlHandler(looper: Looper, that: WeakReference, priva
}
}
that?.cdwn?.setOnClickListener {
- if(that.dlsdwn.translationX != 0f) showDlCard()
+ if(that!!.dlsdwn.translationX != 0f) showDlCard()
else if(checkedChapter == 0) hideDlCard()
else{
- that.pdwn.progress = 0
+ that!!.pdwn.progress = 0
if (downloading || checkedChapter == 0) {
mangaDlTools.wait = !mangaDlTools.wait!!
} else {
@@ -251,7 +250,8 @@ class ComicDlHandler(looper: Looper, that: WeakReference, priva
}
}
}
- fun showMultiSelectInfo() {
+
+ private fun showMultiSelectInfo() {
toolsBox.buildInfo("进入多选模式?", "之后可以对已下载漫画进行批量删除/重新下载",
"确定", null, "取消", { multiSelect = true })
}
@@ -314,12 +314,12 @@ class ComicDlHandler(looper: Looper, that: WeakReference, priva
@SuppressLint("SetTextI18n")
private fun addTbtn(title: String, uuid: String, caption: String, url: String) {
if ((tbtncnt % btnNumPerRow == 0) || isNewTitle) {
- ltbtn = that?.layoutInflater?.inflate(R.layout.line_horizonal_empty, that.ldwn, false)
- that?.ldwn?.addView(ltbtn)
+ that?.ltbtn = that?.layoutInflater?.inflate(R.layout.line_horizonal_empty, that!!.ldwn, false)
+ that?.ldwn?.addView(that!!.ltbtn)
tbtncnt = 0
isNewTitle = false
}
- that?.layoutInflater?.inflate(R.layout.button_tbutton, ltbtn?.ltbtn, false)?.let { tbv ->
+ that?.layoutInflater?.inflate(R.layout.button_tbutton, that!!.ltbtn?.ltbtn, false)?.let { tbv ->
tbv.tbtn.index = tbtnlist.size
tbtnlist += tbv.tbtn
tbtncnt++
@@ -330,15 +330,15 @@ class ComicDlHandler(looper: Looper, that: WeakReference, priva
//tbv.tbtn.hint = caption
tbv.tbtn.caption = caption
tbv.tbtn.layoutParams.width = btnw
- val zipf = CMApi.getZipFile(that.context?.getExternalFilesDir(""), comicName, caption, title)
+ val zipf = CMApi.getZipFile(that!!.context?.getExternalFilesDir(""), comicName, caption, title)
Log.d("MyCD", "Get zipf: $zipf")
ViewMangaActivity.fileArray += zipf
if (zipf.exists()) {
tbv.tbtn.setBackgroundResource(R.drawable.rndbg_checked)
tbv.tbtn.isChecked = false
}
- ltbtn?.ltbtn?.addView(tbv)
- ltbtn?.invalidate()
+ that?.ltbtn?.ltbtn?.addView(tbv)
+ that?.ltbtn?.invalidate()
tbv.tbtn.setOnClickListener {
if (zipf.exists() && !multiSelect) {
it.tbtn.setBackgroundResource(R.drawable.rndbg_checked)
@@ -348,13 +348,13 @@ class ComicDlHandler(looper: Looper, that: WeakReference, priva
ViewMangaActivity.position = it.tbtn.index
dl?.show()
- that.startActivity(Intent(that.context, ViewMangaActivity::class.java)
+ that?.startActivity(Intent(that!!.context, ViewMangaActivity::class.java)
.putExtra("callFrom", "zipFirst")
)
} else {
it.tbtn.setBackgroundResource(R.drawable.toggle_button)
- if (it.tbtn.isChecked) that.tdwn?.text = "$dldChapter/${++checkedChapter}"
- else that.tdwn.text = "$dldChapter/${--checkedChapter}"
+ if (it.tbtn.isChecked) that?.tdwn?.text = "$dldChapter/${++checkedChapter}"
+ else that?.tdwn?.text = "$dldChapter/${--checkedChapter}"
}
}
tbv.tbtn.setOnLongClickListener {
@@ -377,7 +377,7 @@ class ComicDlHandler(looper: Looper, that: WeakReference, priva
ViewMangaActivity.position = it.tbtn.index
dl?.show()
- that.startActivity(Intent(that.context, ViewMangaActivity::class.java))
+ that?.startActivity(Intent(that?.context, ViewMangaActivity::class.java))
}, null, null
)
}
@@ -389,17 +389,17 @@ class ComicDlHandler(looper: Looper, that: WeakReference, priva
private fun analyzeOldStructure() = Thread{
Gson().fromJson(json?.reader(), Array::class.java)?.let {
for (group in it) {
- that?.layoutInflater?.inflate(R.layout.line_caption, that.ldwn, false)?.let { tc ->
+ that?.layoutInflater?.inflate(R.layout.line_caption, that!!.ldwn, false)?.let { tc ->
tc.tcptn.text = group.name
- that.ldwn.addView(
+ that!!.ldwn.addView(
tc,
ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT
)
)
- that.ldwn.addView(
- that.layoutInflater.inflate(R.layout.div_h, that.ldwn, false),
+ that!!.ldwn.addView(
+ that!!.layoutInflater.inflate(R.layout.div_h, that!!.ldwn, false),
ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT
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 085a80b..65cd10c 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
@@ -32,7 +32,7 @@ class DownloadFragment: NoBackRefreshFragment(R.layout.fragment_download) {
}
}
- fun scanFile(cd: File?){
+ private fun scanFile(cd: File?){
val isRoot = cd == context?.getExternalFilesDir("")
val jsonFile = File(cd, "info.bin")
if(isRoot || !jsonFile.exists()) cd?.list()?.sortedArrayWith { o1, o2 ->
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 2f505eb..2719e04 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
@@ -38,7 +38,7 @@ class HomeFragment : NoBackRefreshFragment(R.layout.fragment_home) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
- if(isFirstInflate){
+ if(isFirstInflate) {
val theme = resources.newTheme()
swiperefresh.setColorSchemeColors(
resources.getColor(R.color.colorAccent, theme),
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 0756143..02499c8 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
@@ -8,10 +8,12 @@ import android.os.Message
import android.util.Log
import android.view.View
import android.view.ViewTreeObserver
+import android.widget.LinearLayout
import android.widget.Toast
import androidx.cardview.widget.CardView
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.navigation.Navigation
+import androidx.navigation.fragment.findNavController
import com.bumptech.glide.Glide
import com.bumptech.glide.load.model.GlideUrl
import com.to.aboomy.pager2banner.Banner
@@ -30,19 +32,19 @@ import top.fumiama.copymanga.tools.api.UITools
import java.lang.Thread.sleep
import java.lang.ref.WeakReference
-class HomeHandler(that: WeakReference) : AutoDownloadHandler(
+class HomeHandler(private val that: WeakReference) : AutoDownloadHandler(
that.get()?.getString(R.string.mainPageApiUrl) ?: "",
IndexStructure::class.java,
Looper.myLooper()!!,
9
) {
- private val homeF = that.get()
+ private val homeF get() = that.get()
var index: IndexStructure? = null
var fhib: View? = null
get() {
Log.d("MyHH", "Get fhib.")
if(field == null){
- field = homeF?.layoutInflater?.inflate(R.layout.viewpage_banner, homeF.fhl, false)
+ field = homeF?.layoutInflater?.inflate(R.layout.viewpage_banner, homeF?.fhl, false)
Thread{homeF?.homeHandler?.sendEmptyMessage(3)}.start()
}
return field
@@ -72,7 +74,15 @@ class HomeHandler(that: WeakReference) : AutoDownloadHandler(
}
}
7 -> inflateBanner()
- 8 -> homeF?.fhl?.addView(indexLines[msg.arg1])
+ 8 -> {
+ try {
+ homeF?.fhl?.addView(indexLines[msg.arg1])
+ } catch (e: Exception) {
+ e.printStackTrace()
+ (indexLines[msg.arg1].parent as LinearLayout).removeAllViews()
+ homeF?.fhl?.addView(indexLines[msg.arg1])
+ }
+ }
//9 -> checkIndex()
}
}
@@ -159,7 +169,7 @@ class HomeHandler(that: WeakReference) : AutoDownloadHandler(
}
}
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)
+ that.get()?.findNavController()?.navigate(R.id.nav_rank)
}
}
@@ -201,6 +211,7 @@ class HomeHandler(that: WeakReference) : AutoDownloadHandler(
}
private fun inflateCardLines() {
+ if (indexLines.isNotEmpty()) indexLines = arrayOf()
inflateRec()
inflateTopics()
inflateHot()
@@ -208,7 +219,10 @@ class HomeHandler(that: WeakReference) : AutoDownloadHandler(
inflateFinish()
inflateRank()
Thread{
- for(i in indexLines.indices) obtainMessage(8, i, 0).sendToTarget()
+ for(i in indexLines.indices) {
+ obtainMessage(8, i, 0).sendToTarget()
+ sleep(512)
+ }
obtainMessage(-1, false).sendToTarget() //closeLoad
}.start()
}
@@ -233,11 +247,11 @@ class HomeHandler(that: WeakReference) : AutoDownloadHandler(
.addPageTransformer(ScaleInTransformer())
.setPageMargin(it.dp2px(20) ?: 0, it.dp2px(10) ?: 0)
.setIndicator(
- IndicatorView(homeF.context)
+ IndicatorView(homeF!!.context)
.setIndicatorColor(Color.DKGRAY)
.setIndicatorSelectorColor(Color.WHITE)
.setIndicatorStyle(IndicatorView.IndicatorStyle.INDICATOR_BEZIER)
- ).adapter = homeF.ViewData(v).RecyclerViewAdapter()
+ ).adapter = homeF?.ViewData(v)?.RecyclerViewAdapter()
}
v.invalidate()
homeF?.fhov?.swipeRefreshLayout = homeF?.swiperefresh
@@ -265,7 +279,7 @@ class HomeHandler(that: WeakReference) : AutoDownloadHandler(
2 -> R.layout.line_2bookline
3 -> R.layout.line_3bookline
else -> return -1
- }, homeF.fhl, false)?.apply {
+ }, homeF!!.fhl, false)?.apply {
scanCards(this, comics, finish, isTopic)
rttitle.text = title
ir.setImageResource(iconResId)
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
deleted file mode 100644
index add5393..0000000
--- a/app/src/main/java/top/fumiama/copymanga/ui/sub/SubFragment.kt
+++ /dev/null
@@ -1,18 +0,0 @@
-package top.fumiama.copymanga.ui.sub
-
-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
-
-class SubFragment : Fragment() {
- override fun onCreateView(
- inflater: LayoutInflater,
- container: ViewGroup?,
- savedInstanceState: Bundle?
- ): View? {
- return inflater.inflate(R.layout.fragment_sub, container, false)
- }
-}
\ No newline at end of file
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 a47c95a..f18dea7 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
@@ -360,7 +360,7 @@ class ViewMangaActivity : TitleActivityTemplate() {
val re = tasks?.get(index2load)
if (re != null) Thread{
val data = re.get()
- if(data != null) {
+ if(data != null && data.isNotEmpty()) {
BitmapFactory.decodeByteArray(data, 0, data.size)?.let {
loadImg(imgView, it, isLast, useCut, isLeft)
Log.d("MyVM", "Load from task")
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 c1b2ef6..88ab9d6 100644
--- a/app/src/main/java/top/fumiama/copymanga/update/Update.kt
+++ b/app/src/main/java/top/fumiama/copymanga/update/Update.kt
@@ -18,7 +18,7 @@ import java.security.MessageDigest
object Update {
fun checkUpdate(activity: Activity, toolsBox: UITools, ignoreSkip: Boolean = false) = activity.apply{
- val client = Client("copymanga.v6.army", 12315)
+ val client = Client("copymanga.v6.army", 12316)
val progressBar = layoutInflater.inflate(R.layout.dialog_progress, null, false)
val progressHandler = object : Client.Progress{
override fun notify(progressPercentage: Int) {
diff --git a/app/src/main/res/layout/fragment_book.xml b/app/src/main/res/layout/fragment_book.xml
index a664a2b..31e9de0 100644
--- a/app/src/main/res/layout/fragment_book.xml
+++ b/app/src/main/res/layout/fragment_book.xml
@@ -13,7 +13,8 @@
android:id="@+id/fbl"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:orientation="vertical" />
+ android:orientation="vertical"
+ android:paddingBottom="@dimen/global_content_padding_bottom"/>
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_dlcomic.xml b/app/src/main/res/layout/fragment_dlcomic.xml
index 92baca2..cfcbdc4 100644
--- a/app/src/main/res/layout/fragment_dlcomic.xml
+++ b/app/src/main/res/layout/fragment_dlcomic.xml
@@ -14,7 +14,8 @@
android:id="@+id/ldwn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:orientation="vertical"/>
+ android:orientation="vertical"
+ android:paddingBottom="@dimen/global_content_padding_bottom"/>
-
\ No newline at end of file
+ android:layout_height="match_parent"
+ android:paddingBottom="@dimen/global_content_padding_bottom"/>
diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml
index f57c9b8..f83b3ec 100644
--- a/app/src/main/res/layout/fragment_home.xml
+++ b/app/src/main/res/layout/fragment_home.xml
@@ -1,13 +1,12 @@
-
-
+
+ android:orientation="vertical"
+ android:paddingBottom="@dimen/global_content_padding_bottom">
diff --git a/app/src/main/res/layout/fragment_reader.xml b/app/src/main/res/layout/fragment_reader.xml
deleted file mode 100644
index 3de05ba..0000000
--- a/app/src/main/res/layout/fragment_reader.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_sub.xml b/app/src/main/res/layout/fragment_sub.xml
deleted file mode 100644
index 09c304b..0000000
--- a/app/src/main/res/layout/fragment_sub.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/line_lazybooklines.xml b/app/src/main/res/layout/line_lazybooklines.xml
index d360a96..f497295 100644
--- a/app/src/main/res/layout/line_lazybooklines.xml
+++ b/app/src/main/res/layout/line_lazybooklines.xml
@@ -25,7 +25,8 @@
android:id="@+id/mydll"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:orientation="vertical" />
+ android:orientation="vertical"
+ android:paddingBottom="@dimen/global_content_padding_bottom"/>
diff --git a/app/src/main/res/menu/main.xml b/app/src/main/res/menu/main.xml
index a807181..4311e0b 100644
--- a/app/src/main/res/menu/main.xml
+++ b/app/src/main/res/menu/main.xml
@@ -1,5 +1,5 @@
-
\ 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 2f62c08..a627d47 100644
--- a/app/src/main/res/navigation/mobile_navigation.xml
+++ b/app/src/main/res/navigation/mobile_navigation.xml
@@ -75,12 +75,6 @@
app:popExitAnim="@anim/slide_in_right_exit"/>
-
-
-
-
-
-
0.8
16dp
4dp
+
+ 48dp
\ 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 651e1fe..9e3889c 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -3,11 +3,12 @@
设定
关于
下载
+ 整理
主页
分类
排行
- ©2022源文雨@CoolApk\n本应用为拷贝漫画的第三方客户端,数据均来源于网络,作者不对其中所呈现的任何内容负责。
+ ©2022源文雨\n本应用为拷贝漫画的第三方客户端,数据均来源于网络,作者不对其中所呈现的任何内容负责。
浏览历史
我的订阅
我的下载