1
0
mirror of https://github.com/fumiama/copymanga.git synced 2026-06-27 14:20:30 +08:00

v2.0.beta17

修复
1. 无法保持上页状态
2. 一些闪退
This commit is contained in:
源文雨
2022-12-19 13:10:48 +08:00
parent 15df64da5f
commit 3784d30e3c
20 changed files with 119 additions and 115 deletions

1
.idea/misc.xml generated
View File

@@ -4,6 +4,7 @@
<option name="filePathToZoomLevelMap"> <option name="filePathToZoomLevelMap">
<map> <map>
<entry key="../../.gradle/caches/transforms-3/530137dbe1613faf299d06bd64f02665/transformed/jetified-search-2.4.1/res/layout/search_view.xml" value="0.46557971014492755" /> <entry key="../../.gradle/caches/transforms-3/530137dbe1613faf299d06bd64f02665/transformed/jetified-search-2.4.1/res/layout/search_view.xml" value="0.46557971014492755" />
<entry key="../../Library/Android/sdk/platforms/android-33/data/res/drawable-car/car_button_background.xml" value="0.316" />
<entry key="app/src/main/res/drawable-anydpi/ic_like.xml" value="0.5572916666666666" /> <entry key="app/src/main/res/drawable-anydpi/ic_like.xml" value="0.5572916666666666" />
<entry key="app/src/main/res/drawable-anydpi/ic_setting_search.xml" value="0.5572916666666666" /> <entry key="app/src/main/res/drawable-anydpi/ic_setting_search.xml" value="0.5572916666666666" />
<entry key="app/src/main/res/layout/activity_dl.xml" value="0.5025484199796126" /> <entry key="app/src/main/res/layout/activity_dl.xml" value="0.5025484199796126" />

View File

@@ -9,8 +9,8 @@ android {
applicationId 'top.fumiama.copymanga' applicationId 'top.fumiama.copymanga'
minSdkVersion 23 minSdkVersion 23
targetSdkVersion 33 targetSdkVersion 33
versionCode 28 versionCode 29
versionName '2.0.beta16' versionName '2.0.beta17'
resConfigs 'zh', 'zh-rCN' resConfigs 'zh', 'zh-rCN'
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
@@ -51,16 +51,13 @@ android {
} }
dependencies { dependencies {
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.core:core-ktx:1.9.0'
implementation 'androidx.appcompat:appcompat:1.5.1' implementation 'androidx.appcompat:appcompat:1.5.1'
implementation 'androidx.legacy:legacy-support-v4:1.0.0' implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'com.google.android.material:material:1.6.1' implementation 'com.google.android.material:material:1.7.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4' implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'androidx.navigation:navigation-fragment-ktx:2.5.2' implementation 'androidx.navigation:navigation-fragment-ktx:2.5.3'
implementation 'androidx.navigation:navigation-ui-ktx:2.5.2' implementation 'androidx.navigation:navigation-ui-ktx:2.5.3'
implementation 'androidx.navigation:navigation-fragment-ktx:2.5.2'
implementation 'androidx.navigation:navigation-ui-ktx:2.5.2'
testImplementation 'junit:junit:4.13.2' testImplementation 'junit:junit:4.13.2'
implementation "androidx.preference:preference-ktx:1.2.0" implementation "androidx.preference:preference-ktx:1.2.0"
implementation 'com.afollestad.material-dialogs:input:3.3.0' implementation 'com.afollestad.material-dialogs:input:3.3.0'

View File

@@ -8,7 +8,6 @@ import top.fumiama.copymanga.tools.api.UITools
open class ActivityTemplate:Activity() { open class ActivityTemplate:Activity() {
lateinit var toolsBox: UITools lateinit var toolsBox: UITools
val p = IntPref()
val pb = BoolPref() val pb = BoolPref()
private val allFullScreen private val allFullScreen
get() = getPreferences(MODE_PRIVATE).getBoolean("allFullScreen", false) get() = getPreferences(MODE_PRIVATE).getBoolean("allFullScreen", false)
@@ -24,14 +23,6 @@ open class ActivityTemplate:Activity() {
View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_FULLSCREEN or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_FULLSCREEN or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
} }
inner class IntPref {
operator fun get(key: String) = getPreferences(MODE_PRIVATE).getInt(key, -5)
operator fun set(key: String, value: Int) = getPreferences(MODE_PRIVATE).edit {
putInt(key, value)
apply()
}
}
inner class BoolPref { inner class BoolPref {
operator fun get(key: String) = getPreferences(MODE_PRIVATE).getBoolean(key, false) operator fun get(key: String) = getPreferences(MODE_PRIVATE).getBoolean(key, false)
operator fun set(key: String, value: Boolean) = getPreferences(MODE_PRIVATE).edit { operator fun set(key: String, value: Boolean) = getPreferences(MODE_PRIVATE).edit {

View File

@@ -40,6 +40,14 @@ open class MangaPagesFragmentTemplate(inflateRes:Int, val isLazy: Boolean = true
} }
} }
override fun onDestroy() {
super.onDestroy()
cardList.exitCardList = true
mh = null
row = null
jsonReaderNow = null
}
fun setLayouts() { fun setLayouts() {
val toolsBox = this.context?.let { UITools(it) } val toolsBox = this.context?.let { UITools(it) }
val widthData = toolsBox?.calcWidthFromDp(8, 135) val widthData = toolsBox?.calcWidthFromDp(8, 135)

View File

@@ -7,17 +7,18 @@ import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
open class NoBackRefreshFragment(private val layoutToLoad: Int):Fragment() { open class NoBackRefreshFragment(private val layoutToLoad: Int): Fragment() {
var rootView: View? = null private var _rootView: View? = null
val rootView: View get() = _rootView!!
var isFirstInflate = true var isFirstInflate = true
override fun onCreateView( override fun onCreateView(
inflater: LayoutInflater, inflater: LayoutInflater,
container: ViewGroup?, container: ViewGroup?,
savedInstanceState: Bundle? savedInstanceState: Bundle?
): View? { ): View? {
if(rootView == null){ if(_rootView == null){
isFirstInflate = true isFirstInflate = true
rootView = inflater.inflate(layoutToLoad, container, false) _rootView = inflater.inflate(layoutToLoad, container, false)
Log.d("MyNBRF", "is first inflate") Log.d("MyNBRF", "is first inflate")
} else { } else {
isFirstInflate = false isFirstInflate = false
@@ -25,9 +26,9 @@ open class NoBackRefreshFragment(private val layoutToLoad: Int):Fragment() {
} }
return rootView return rootView
} }
override fun onDestroyView() { override fun onDestroy() {
super.onDestroyView() super.onDestroy()
rootView = null _rootView = null
isFirstInflate = true isFirstInflate = true
} }
} }

View File

@@ -7,12 +7,13 @@ import android.util.Log
import com.google.gson.Gson import com.google.gson.Gson
import top.fumiama.dmzj.copymanga.R import top.fumiama.dmzj.copymanga.R
import top.fumiama.copymanga.MainActivity.Companion.mainWeakReference import top.fumiama.copymanga.MainActivity.Companion.mainWeakReference
import top.fumiama.copymanga.json.Chapter2Return
import top.fumiama.copymanga.json.ReturnBase import top.fumiama.copymanga.json.ReturnBase
import top.fumiama.copymanga.tools.http.DownloadTools import top.fumiama.copymanga.tools.http.DownloadTools
import top.fumiama.copymanga.tools.thread.TimeThread import top.fumiama.copymanga.tools.thread.TimeThread
import java.io.File
import java.security.MessageDigest
open class AutoDownloadHandler(private val url: String, private val jsonClass: Class<*>, looper: Looper, private val callCheckMsg: Int = -1): Handler(looper) { open class AutoDownloadHandler(private val url: String, private val jsonClass: Class<*>, looper: Looper, private val callCheckMsg: Int = -1, private val loadFromCache: Boolean = false, private val customCacheFile: File? = null): Handler(looper) {
var exit = false var exit = false
private var timeThread: TimeThread? = null private var timeThread: TimeThread? = null
private var checkTimes = 0 private var checkTimes = 0
@@ -40,7 +41,34 @@ open class AutoDownloadHandler(private val url: String, private val jsonClass: C
timeThread?.canDo = true timeThread?.canDo = true
timeThread?.start() timeThread?.start()
} }
private fun toHexStr(byteArray: ByteArray) =
with(StringBuilder()) {
byteArray.forEach {
val hex = it.toInt() and (0xFF)
val hexStr = Integer.toHexString(hex)
if (hexStr.length == 1) append("0").append(hexStr)
else append(hexStr)
}
toString()
}
private fun dlThread() { private fun dlThread() {
val cacheName = toHexStr(MessageDigest.getInstance("MD5").digest(url.encodeToByteArray()))
val cacheFile = customCacheFile?:(mainWeakReference?.get()?.externalCacheDir?.let { File(it, cacheName) })
if(loadFromCache) {
cacheFile?.let {
if (it.exists()) {
var pass = true
val fi = it.inputStream()
try {
pass = setGsonItem(Gson().fromJson(fi.reader(), jsonClass))
} catch (e: Exception) {
e.printStackTrace()
}
fi.close()
if (pass) return
}
}
}
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(exit) return
if(it == null) { if(it == null) {
@@ -51,6 +79,9 @@ open class AutoDownloadHandler(private val url: String, private val jsonClass: C
var pass = true var pass = true
try { try {
pass = setGsonItem(Gson().fromJson(fi.reader(), jsonClass)) pass = setGsonItem(Gson().fromJson(fi.reader(), jsonClass))
if (pass && loadFromCache) {
cacheFile?.writeBytes(it)
}
} catch (e: Exception) { } catch (e: Exception) {
e.printStackTrace() e.printStackTrace()
} }

View File

@@ -27,15 +27,17 @@ class CardList(
private var index = 0 private var index = 0
private var count = 0 private var count = 0
var initClickListeners: InitClickListeners? = null var initClickListeners: InitClickListeners? = null
var exitCardList = false
fun reset(){ fun reset(){
rows = arrayOfNulls(20) rows = arrayOfNulls(20)
index = 0 index = 0
count = 0 count = 0
exitCardList = false
} }
private fun manageRow(){ private fun manageRow(){
if(count++ % cardPerRow == 0) inflateRow() if(!exitCardList && count++ % cardPerRow == 0) inflateRow()
Log.d("MyCL", "index: $index, cardPR: $cardPerRow") Log.d("MyCL", "index: $index, cardPR: $cardPerRow")
} }
@@ -43,9 +45,9 @@ class CardList(
that?.layoutInflater?.inflate(R.layout.line_horizonal_empty, that.mydll, false)?.let { that?.layoutInflater?.inflate(R.layout.line_horizonal_empty, that.mydll, false)?.let {
it.layoutParams.height = cardHeight + 16 it.layoutParams.height = cardHeight + 16
mainWeakReference?.get()?.runOnUiThread { mainWeakReference?.get()?.runOnUiThread {
that.mydll.addView(it) if(!exitCardList) that.mydll.addView(it)
} }
recycleOneRow(it) if(!exitCardList) recycleOneRow(it)
} }
} }
private fun recycleOneRow(v:View?){ private fun recycleOneRow(v:View?){
@@ -54,7 +56,7 @@ class CardList(
else { else {
val victim = rows[relativeIndex] val victim = rows[relativeIndex]
mainWeakReference?.get()?.runOnUiThread { mainWeakReference?.get()?.runOnUiThread {
that?.apply { if(!exitCardList) that?.apply {
mydll?.removeView(victim) mydll?.removeView(victim)
mys?.scrollY = that.mys?.scrollY?.minus(cardHeight + 16)?:0 mys?.scrollY = that.mys?.scrollY?.minus(cardHeight + 16)?:0
} }
@@ -65,8 +67,8 @@ class CardList(
@ExperimentalStdlibApi @ExperimentalStdlibApi
fun addCard(name: String, append: String? = null, head: String? = null, path: String? = null, chapterUUID: String? = null, pn: Int? = null, isFinish: Boolean = false){ fun addCard(name: String, append: String? = null, head: String? = null, path: String? = null, chapterUUID: String? = null, pn: Int? = null, isFinish: Boolean = false){
manageRow() if(!exitCardList) manageRow()
that?.layoutInflater?.inflate(R.layout.card_book, that.mydll.ltbtn, false)?.let { if(!exitCardList) that?.layoutInflater?.inflate(R.layout.card_book, that.mydll.ltbtn, false)?.let {
val card = it.cic val card = it.cic
card.name = name card.name = name
card.append = append card.append = append
@@ -77,7 +79,7 @@ class CardList(
card.pageNumber = pn card.pageNumber = pn
card.isFinish = isFinish card.isFinish = isFinish
mainWeakReference?.get()?.runOnUiThread{ mainWeakReference?.get()?.runOnUiThread{
addCard(it) if(!exitCardList) addCard(it)
} }
} }
} }
@@ -88,11 +90,11 @@ class CardList(
val name = card.name + (card.append?:"") val name = card.name + (card.append?:"")
val head = card.headImageUrl val head = card.headImageUrl
val file = File(that?.context?.getExternalFilesDir(""), card.name) val file = File(that?.context?.getExternalFilesDir(""), card.name)
cardFrame.let { if(!exitCardList) cardFrame.let {
it.tic.text = name it.tic.text = name
if(!file.exists()){ if(!file.exists()){
that?.context?.let { context -> that?.context?.let { context ->
Glide.with(context).load(GlideUrl(head, CMApi.myGlideHeaders)).into(it.imic) if(!exitCardList) Glide.with(context).load(GlideUrl(head, CMApi.myGlideHeaders)).into(it.imic)
} }
}else { }else {
val img = File(file, "head.jpg") val img = File(file, "head.jpg")

View File

@@ -4,7 +4,7 @@ import android.os.Bundle
import android.util.Log import android.util.Log
import android.view.View import android.view.View
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.navigation.Navigation import androidx.navigation.fragment.findNavController
import com.google.gson.Gson import com.google.gson.Gson
import top.fumiama.copymanga.json.BookListStructure import top.fumiama.copymanga.json.BookListStructure
import top.fumiama.copymanga.json.HistoryBookListStructure import top.fumiama.copymanga.json.HistoryBookListStructure
@@ -83,7 +83,7 @@ open class InfoCardLoader(inflateRes:Int, private val navId:Int, private val isT
v.setOnClickListener { v.setOnClickListener {
val bundle = Bundle() val bundle = Bundle()
bundle.putString("path", path) bundle.putString("path", path)
rootView?.let { Navigation.findNavController(it).navigate(navId, bundle) } findNavController().navigate(navId, bundle)
} }
} }
} }

View File

@@ -2,16 +2,13 @@ package top.fumiama.copymanga.ui.book
import android.content.Context.MODE_PRIVATE import android.content.Context.MODE_PRIVATE
import android.os.Bundle import android.os.Bundle
import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import androidx.navigation.fragment.findNavController
import androidx.navigation.Navigation
import kotlinx.android.synthetic.main.app_bar_main.*
import kotlinx.android.synthetic.main.line_booktandb.* import kotlinx.android.synthetic.main.line_booktandb.*
import top.fumiama.dmzj.copymanga.R
import top.fumiama.copymanga.MainActivity.Companion.mainWeakReference import top.fumiama.copymanga.MainActivity.Companion.mainWeakReference
import top.fumiama.copymanga.manga.Reader import top.fumiama.copymanga.manga.Reader
import top.fumiama.copymanga.template.general.NoBackRefreshFragment import top.fumiama.copymanga.template.general.NoBackRefreshFragment
import top.fumiama.dmzj.copymanga.R
import java.lang.Thread.sleep import java.lang.Thread.sleep
import java.lang.ref.WeakReference import java.lang.ref.WeakReference
@@ -31,14 +28,14 @@ class BookFragment: NoBackRefreshFragment(R.layout.fragment_book) {
} }
} }
override fun onResume() { /*override fun onResume() {
super.onResume() super.onResume()
mainWeakReference?.get()?.apply { mainWeakReference?.get()?.apply {
toolbar.title = bookHandler?.book?.results?.comic?.name toolbar.title = bookHandler?.book?.results?.comic?.name
} }
setStartRead() setStartRead()
fbibinfo?.layoutParams?.height = ((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() { override fun onDestroy() {
super.onDestroy() super.onDestroy()
@@ -78,7 +75,7 @@ class BookFragment: NoBackRefreshFragment(R.layout.fragment_book) {
bundle.putStringArray("group", bookHandler!!.gpws) bundle.putStringArray("group", bookHandler!!.gpws)
bundle.putStringArray("groupNames", bookHandler!!.keys) bundle.putStringArray("groupNames", bookHandler!!.keys)
bundle.putIntArray("count", bookHandler!!.cnts) bundle.putIntArray("count", bookHandler!!.cnts)
rootView?.let { Navigation.findNavController(it).navigate(R.id.action_nav_book_to_nav_group, bundle) } findNavController().navigate(R.id.action_nav_book_to_nav_group, bundle)
} }
companion object { companion object {

View File

@@ -5,26 +5,22 @@ import android.os.Looper
import android.os.Message import android.os.Message
import android.util.Log import android.util.Log
import android.view.View import android.view.View
import android.widget.LinearLayout
import android.widget.TextView import android.widget.TextView
import android.widget.Toast import android.widget.Toast
import androidx.core.content.edit import androidx.navigation.fragment.findNavController
import androidx.navigation.Navigation
import com.bumptech.glide.Glide import com.bumptech.glide.Glide
import com.bumptech.glide.load.model.GlideUrl import com.bumptech.glide.load.model.GlideUrl
import com.bumptech.glide.request.RequestOptions import com.bumptech.glide.request.RequestOptions
import com.google.gson.Gson import com.google.gson.Gson
import kotlinx.android.synthetic.main.app_bar_main.* import kotlinx.android.synthetic.main.app_bar_main.*
import kotlinx.android.synthetic.main.button_tbutton.view.*
import kotlinx.android.synthetic.main.card_book.* import kotlinx.android.synthetic.main.card_book.*
import kotlinx.android.synthetic.main.fragment_book.* import kotlinx.android.synthetic.main.fragment_book.*
import kotlinx.android.synthetic.main.line_2chapters.view.* import kotlinx.android.synthetic.main.line_2chapters.view.*
import kotlinx.android.synthetic.main.line_bookinfo.* import kotlinx.android.synthetic.main.line_bookinfo.*
import kotlinx.android.synthetic.main.line_bookinfo_text.* import kotlinx.android.synthetic.main.line_bookinfo_text.*
import kotlinx.android.synthetic.main.line_booktandb.*
import kotlinx.android.synthetic.main.line_caption.view.* import kotlinx.android.synthetic.main.line_caption.view.*
import kotlinx.android.synthetic.main.line_chapter.view.* import kotlinx.android.synthetic.main.line_chapter.view.*
import kotlinx.android.synthetic.main.widget_downloadbar.*
import top.fumiama.dmzj.copymanga.R
import top.fumiama.copymanga.MainActivity.Companion.mainWeakReference import top.fumiama.copymanga.MainActivity.Companion.mainWeakReference
import top.fumiama.copymanga.json.BookInfoStructure import top.fumiama.copymanga.json.BookInfoStructure
import top.fumiama.copymanga.json.ChapterStructure import top.fumiama.copymanga.json.ChapterStructure
@@ -38,6 +34,7 @@ import top.fumiama.copymanga.tools.api.GlideBlurTransformation
import top.fumiama.copymanga.ui.comicdl.ComicDlFragment import top.fumiama.copymanga.ui.comicdl.ComicDlFragment
import top.fumiama.copymanga.ui.comicdl.ComicDlFragment.Companion.json import top.fumiama.copymanga.ui.comicdl.ComicDlFragment.Companion.json
import top.fumiama.copymanga.ui.vm.ViewMangaActivity import top.fumiama.copymanga.ui.vm.ViewMangaActivity
import top.fumiama.dmzj.copymanga.R
import java.io.File import java.io.File
import java.lang.Thread.sleep import java.lang.Thread.sleep
import java.lang.ref.WeakReference import java.lang.ref.WeakReference
@@ -82,9 +79,7 @@ class BookHandler(private val th: WeakReference<BookFragment>, private val path:
if(exit) return if(exit) return
if(!hasToastedError) { if(!hasToastedError) {
Toast.makeText(that?.context, R.string.null_book, Toast.LENGTH_SHORT).show() Toast.makeText(that?.context, R.string.null_book, Toast.LENGTH_SHORT).show()
that?.rootView?.let { it1 -> that?.apply { findNavController().popBackStack() }
Navigation.findNavController(it1).navigateUp()
}
} }
} }
@@ -99,14 +94,17 @@ class BookHandler(private val th: WeakReference<BookFragment>, private val path:
super.doWhenFinishDownload() super.doWhenFinishDownload()
if(exit) return if(exit) return
inflateComponents() inflateComponents()
book?.results?.groups?.values?.forEach{ if(keys.isEmpty()) book?.results?.groups?.values?.forEach{
keys += it.name keys += it.name
gpws += it.path_word gpws += it.path_word
cnts += it.count cnts += it.count
Log.d("MyBFH", "Add caption: ${it.name} @ ${it.path_word} of ${it.count}") Log.d("MyBFH", "Add caption: ${it.name} @ ${it.path_word} of ${it.count}")
} }
initComicData() if(vols?.isEmpty() != false) initComicData()
Thread{ for (i in 1..5) sendEmptyMessage(i) }.start() Thread{ for (i in 1..5) {
sleep(512)
sendEmptyMessage(i)
} }.start()
} }
private fun endSetLayouts(){ private fun endSetLayouts(){
@@ -117,8 +115,8 @@ class BookHandler(private val th: WeakReference<BookFragment>, private val path:
} }
private fun inflateComponents(){ private fun inflateComponents(){
that?.fbibinfo = that?.layoutInflater?.inflate(R.layout.line_bookinfo, that?.fbl, false) if(that?.fbibinfo == null) 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) if(that?.fbtinfo == null) that?.fbtinfo = that?.layoutInflater?.inflate(R.layout.line_text_info, that?.fbl, false)
} }
private fun setOverScale(){ private fun setOverScale(){
@@ -127,7 +125,13 @@ class BookHandler(private val th: WeakReference<BookFragment>, private val path:
private fun setCover(){ private fun setCover(){
that?.apply { that?.apply {
fbl.addView(fbibinfo) try {
fbl.addView(fbibinfo)
} catch (e: Exception) {
e.printStackTrace()
(fbibinfo!!.parent as LinearLayout).removeAllViews()
fbl.addView(fbibinfo)
}
val load = Glide.with(this).load( val load = Glide.with(this).load(
GlideUrl(book?.results?.comic?.cover, CMApi.myGlideHeaders) GlideUrl(book?.results?.comic?.cover, CMApi.myGlideHeaders)
).timeout(10000) ).timeout(10000)
@@ -281,7 +285,7 @@ class BookHandler(private val th: WeakReference<BookFragment>, private val path:
val bundle = Bundle() val bundle = Bundle()
bundle.putString("name", name) bundle.putString("name", name)
bundle.putString("path", path) bundle.putString("path", path)
that?.rootView?.let { Navigation.findNavController(it).navigate(nav, bundle) } that?.apply { findNavController().navigate(nav, bundle) }
} }
} }

View File

@@ -16,7 +16,7 @@ class HistoryFragment : InfoCardLoader(R.layout.fragment_history, R.id.action_na
override fun onLoadFinish() { override fun onLoadFinish() {
super.onLoadFinish() super.onLoadFinish()
MainActivity.mainWeakReference?.get()?.runOnUiThread { MainActivity.mainWeakReference?.get()?.runOnUiThread {
mypl.visibility = View.GONE if(ad?.exit == false) mypl.visibility = View.GONE
} }
} }
} }

View File

@@ -16,7 +16,7 @@ class NewestFragment : InfoCardLoader(R.layout.fragment_newest, R.id.action_nav_
override fun onLoadFinish() { override fun onLoadFinish() {
super.onLoadFinish() super.onLoadFinish()
mainWeakReference?.get()?.runOnUiThread { mainWeakReference?.get()?.runOnUiThread {
mypl.visibility = View.GONE if(ad?.exit == false) mypl.visibility = View.GONE
} }
} }
} }

View File

@@ -40,7 +40,7 @@ class RankFragment : InfoCardLoader(R.layout.fragment_rank, R.id.action_nav_rank
override fun onLoadFinish() { override fun onLoadFinish() {
super.onLoadFinish() super.onLoadFinish()
mainWeakReference?.get()?.runOnUiThread { mainWeakReference?.get()?.runOnUiThread {
mypl.visibility = View.GONE if(ad?.exit == false) mypl.visibility = View.GONE
} }
} }
@@ -48,7 +48,7 @@ class RankFragment : InfoCardLoader(R.layout.fragment_rank, R.id.action_nav_rank
sortValue = value sortValue = value
Thread{ Thread{
sleep(400) sleep(400)
mh?.sendEmptyMessage(4) if(ad?.exit == false) mh?.sendEmptyMessage(4)
}.start() }.start()
} }
} }

View File

@@ -16,7 +16,7 @@ class RecFragment : InfoCardLoader(R.layout.fragment_recommend, R.id.action_nav_
override fun onLoadFinish() { override fun onLoadFinish() {
super.onLoadFinish() super.onLoadFinish()
mainWeakReference?.get()?.runOnUiThread { mainWeakReference?.get()?.runOnUiThread {
mypl.visibility = View.GONE if(ad?.exit == false) mypl.visibility = View.GONE
} }
} }
} }

View File

@@ -41,7 +41,7 @@ class SortFragment : InfoCardLoader(R.layout.fragment_sort, R.id.action_nav_sort
filter = Gson().fromJson(it.inputStream().reader(), FilterStructure::class.java) filter = Gson().fromJson(it.inputStream().reader(), FilterStructure::class.java)
if(ad?.exit == true) return@AutoDownloadThread if(ad?.exit == true) return@AutoDownloadThread
mainWeakReference?.get()?.runOnUiThread{ mainWeakReference?.get()?.runOnUiThread{
setClasses() if(ad?.exit == false) setClasses()
} }
} }
}.start() }.start()
@@ -50,7 +50,7 @@ class SortFragment : InfoCardLoader(R.layout.fragment_sort, R.id.action_nav_sort
override fun onLoadFinish() { override fun onLoadFinish() {
super.onLoadFinish() super.onLoadFinish()
mainWeakReference?.get()?.runOnUiThread { mainWeakReference?.get()?.runOnUiThread {
mypl.visibility = View.GONE if(ad?.exit == false) mypl.visibility = View.GONE
} }
} }

View File

@@ -32,7 +32,7 @@ class TopicFragment : InfoCardLoader(R.layout.fragment_topic, R.id.action_nav_to
topic?.apply { topic?.apply {
if(ad?.exit == true) return@AutoDownloadThread if(ad?.exit == true) return@AutoDownloadThread
mainWeakReference?.get()?.let { mainWeakReference?.get()?.let {
it.runOnUiThread { if(ad?.exit == false) it.runOnUiThread {
it.toolbar.title = results.title it.toolbar.title = results.title
ftttime.text = results.datetime_created ftttime.text = results.datetime_created
fttintro.text = results.intro fttintro.text = results.intro
@@ -47,7 +47,7 @@ class TopicFragment : InfoCardLoader(R.layout.fragment_topic, R.id.action_nav_to
override fun onLoadFinish() { override fun onLoadFinish() {
super.onLoadFinish() super.onLoadFinish()
mainWeakReference?.get()?.runOnUiThread { mainWeakReference?.get()?.runOnUiThread {
mypl.visibility = View.GONE if(ad?.exit == false) mypl.visibility = View.GONE
} }
} }
} }

View File

@@ -54,6 +54,7 @@ class ComicDlFragment: NoBackRefreshFragment(R.layout.fragment_dlcomic) {
it.exit = true it.exit = true
} }
exit = true exit = true
handler = null
} }
private fun start2load(volumes: Array<VolumeStructure>, isFromFile: Boolean = false, groupArray: Array<String>? =null){ private fun start2load(volumes: Array<VolumeStructure>, isFromFile: Boolean = false, groupArray: Array<String>? =null){

View File

@@ -3,19 +3,18 @@ package top.fumiama.copymanga.ui.download
import android.app.AlertDialog import android.app.AlertDialog
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.os.Looper
import android.util.Log import android.util.Log
import android.view.View import android.view.View
import android.widget.ArrayAdapter import android.widget.ArrayAdapter
import android.widget.Toast import android.widget.Toast
import androidx.navigation.Navigation import androidx.navigation.fragment.findNavController
import kotlinx.android.synthetic.main.app_bar_main.* import kotlinx.android.synthetic.main.app_bar_main.*
import kotlinx.android.synthetic.main.fragment_download.* import kotlinx.android.synthetic.main.fragment_download.*
import top.fumiama.dmzj.copymanga.R
import top.fumiama.copymanga.MainActivity.Companion.mainWeakReference import top.fumiama.copymanga.MainActivity.Companion.mainWeakReference
import top.fumiama.copymanga.template.general.NoBackRefreshFragment import top.fumiama.copymanga.template.general.NoBackRefreshFragment
import top.fumiama.copymanga.ui.comicdl.ComicDlFragment import top.fumiama.copymanga.ui.comicdl.ComicDlFragment
import top.fumiama.copymanga.ui.vm.ViewMangaActivity import top.fumiama.copymanga.ui.vm.ViewMangaActivity
import top.fumiama.dmzj.copymanga.R
import java.io.File import java.io.File
import java.util.regex.Pattern import java.util.regex.Pattern
import java.util.zip.ZipInputStream import java.util.zip.ZipInputStream
@@ -98,10 +97,8 @@ class DownloadFragment: NoBackRefreshFragment(R.layout.fragment_download) {
bundle.putString("name", jsonFile.parentFile?.name?:"Null") bundle.putString("name", jsonFile.parentFile?.name?:"Null")
ComicDlFragment.json = jsonFile.readText() ComicDlFragment.json = jsonFile.readText()
Log.d("MyDF", "root view: $rootView") Log.d("MyDF", "root view: $rootView")
rootView?.let { Log.d("MyDF", "action_nav_download_to_nav_group")
Log.d("MyDF", "action_nav_download_to_nav_group") findNavController().navigate(R.id.action_nav_download_to_nav_group, bundle)
Navigation.findNavController(it).navigate(R.id.action_nav_download_to_nav_group, bundle)
}
} }
private fun callSelf(title: String){ private fun callSelf(title: String){
@@ -109,10 +106,8 @@ class DownloadFragment: NoBackRefreshFragment(R.layout.fragment_download) {
bundle.putString("title", title) bundle.putString("title", title)
Log.d("MyDF", "Call self to $title") Log.d("MyDF", "Call self to $title")
Log.d("MyDF", "root view: $rootView") Log.d("MyDF", "root view: $rootView")
rootView?.let { Log.d("MyDF", "action_nav_download_self")
Log.d("MyDF", "action_nav_download_self") findNavController().navigate(R.id.action_nav_download_self, bundle)
Navigation.findNavController(it).navigate(R.id.action_nav_download_self, bundle)
}
} }
private fun findNullWebpZipFileInDir(f: File){ private fun findNullWebpZipFileInDir(f: File){

View File

@@ -11,7 +11,7 @@ import android.view.ViewGroup
import android.widget.ArrayAdapter import android.widget.ArrayAdapter
import android.widget.ImageButton import android.widget.ImageButton
import androidx.appcompat.view.ContextThemeWrapper import androidx.appcompat.view.ContextThemeWrapper
import androidx.navigation.Navigation import androidx.navigation.fragment.findNavController
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.bumptech.glide.Glide import com.bumptech.glide.Glide
@@ -20,7 +20,6 @@ import com.google.gson.Gson
import com.lapism.search.internal.SearchLayout import com.lapism.search.internal.SearchLayout
import kotlinx.android.synthetic.main.card_book_plain.view.* import kotlinx.android.synthetic.main.card_book_plain.view.*
import kotlinx.android.synthetic.main.fragment_home.* import kotlinx.android.synthetic.main.fragment_home.*
import kotlinx.android.synthetic.main.line_text_info.view.*
import kotlinx.android.synthetic.main.line_word.view.* import kotlinx.android.synthetic.main.line_word.view.*
import kotlinx.android.synthetic.main.viewpage_horizonal.view.* import kotlinx.android.synthetic.main.viewpage_horizonal.view.*
import top.fumiama.copymanga.MainActivity.Companion.ime import top.fumiama.copymanga.MainActivity.Companion.ime
@@ -160,7 +159,7 @@ class HomeFragment : NoBackRefreshFragment(R.layout.fragment_home) {
holder.itemView.vpc.setOnClickListener { holder.itemView.vpc.setOnClickListener {
val bundle = Bundle() val bundle = Bundle()
homeHandler.index?.results?.banners?.get(position)?.comic?.path_word?.let { it1 -> bundle.putString("path", it1) } homeHandler.index?.results?.banners?.get(position)?.comic?.path_word?.let { it1 -> bundle.putString("path", it1) }
rootView?.let { it1 -> Navigation.findNavController(it1).navigate(R.id.action_nav_home_to_nav_book, bundle) } findNavController().navigate(R.id.action_nav_home_to_nav_book, bundle)
} }
} }
@@ -199,7 +198,7 @@ class HomeFragment : NoBackRefreshFragment(R.layout.fragment_home) {
holder.itemView.lwc.setOnClickListener { holder.itemView.lwc.setOnClickListener {
val bundle = Bundle() val bundle = Bundle()
bundle.putString("path", path_word) bundle.putString("path", path_word)
rootView?.let { r -> Navigation.findNavController(r).navigate(R.id.action_nav_home_to_nav_book, bundle) } findNavController().navigate(R.id.action_nav_home_to_nav_book, bundle)
} }
holder.itemView.lwc.layoutParams.height = fhs.width / 4 holder.itemView.lwc.layoutParams.height = fhs.width / 4
} }

View File

@@ -143,7 +143,7 @@ class HomeHandler(private val that: WeakReference<HomeFragment>) : AutoDownloadH
comics += rec.comic comics += rec.comic
} }
if(comics.size == 3) allocateLine(homeF?.getString(R.string.manga_rec)?:"", R.drawable.img_master_work, comics) { if(comics.size == 3) allocateLine(homeF?.getString(R.string.manga_rec)?:"", R.drawable.img_master_work, comics) {
homeF?.rootView?.apply { Navigation.findNavController(this).navigate(R.id.action_nav_home_to_nav_recommend) } homeF?.findNavController()?.navigate(R.id.action_nav_home_to_nav_recommend)
} }
} }
} }
@@ -169,7 +169,7 @@ class HomeHandler(private val that: WeakReference<HomeFragment>) : AutoDownloadH
} }
} }
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) {
that.get()?.findNavController()?.navigate(R.id.nav_rank) homeF?.findNavController()?.navigate(R.id.nav_rank)
} }
} }
@@ -192,7 +192,7 @@ class HomeHandler(private val that: WeakReference<HomeFragment>) : AutoDownloadH
comics += rec.comic comics += rec.comic
} }
if(comics.size == 9) allocateLine(homeF?.getString(R.string.new_list)?:"", R.drawable.img_latest_pub, comics) { if(comics.size == 9) allocateLine(homeF?.getString(R.string.new_list)?:"", R.drawable.img_latest_pub, comics) {
homeF?.rootView?.apply { Navigation.findNavController(this).navigate(R.id.action_nav_home_to_nav_newest) } homeF?.findNavController()?.navigate(R.id.action_nav_home_to_nav_newest)
} }
} }
} }
@@ -205,7 +205,7 @@ class HomeHandler(private val that: WeakReference<HomeFragment>) : AutoDownloadH
comics += rec comics += rec
} }
if(comics.size == 6) allocateLine(homeF?.getString(R.string.complete)?:"", R.drawable.img_novel_eye, comics, true) { if(comics.size == 6) allocateLine(homeF?.getString(R.string.complete)?:"", R.drawable.img_novel_eye, comics, true) {
homeF?.rootView?.apply { Navigation.findNavController(this).navigate(R.id.action_nav_home_to_nav_finish) } homeF?.findNavController()?.navigate(R.id.action_nav_home_to_nav_finish)
} }
} }
} }
@@ -290,29 +290,6 @@ class HomeHandler(private val that: WeakReference<HomeFragment>) : AutoDownloadH
return p return p
} }
/*private fun setLines(v: View, position: Int) {
lines?.let {
v.rttitle.text = it[position].title
v.ir.setImageResource(
when (position) {
1 -> R.drawable.img_novel_refresh
2 -> R.drawable.img_novel_more
3 -> R.drawable.img_novel_play
4 -> R.drawable.img_novel_eye
else -> R.drawable.img_novel_refresh
}
)
Thread{this.obtainMessage(4, position, 0, v).sendToTarget()}.start() //scanCards
setLineHeight(v, if (position == 4) 2 else 1)
if(position == 4) {
Thread{ this.obtainMessage(-1, false).sendToTarget() }.start() //closeLoad
}
if(position == 1) v.setOnClickListener {
Navigation.findNavController(it).navigate(R.id.action_nav_home_to_nav_latest)
}else v.rimore.visibility = View.GONE
}
}*/
private fun scanCards(v: View, comics: Array<ComicStructure>, finish: Boolean, isTopic: Boolean){ private fun scanCards(v: View, comics: Array<ComicStructure>, finish: Boolean, isTopic: Boolean){
var id = v.rc1.id var id = v.rc1.id
var card = v.findViewById<ConstraintLayout>(id) var card = v.findViewById<ConstraintLayout>(id)
@@ -340,7 +317,7 @@ class HomeHandler(private val that: WeakReference<HomeFragment>) : AutoDownloadH
cv.setOnClickListener { cv.setOnClickListener {
val bundle = Bundle() val bundle = Bundle()
bundle.putString("path", pw) bundle.putString("path", pw)
homeF?.rootView?.let { Navigation.findNavController(it).navigate(if(isTopic) R.id.action_nav_home_to_nav_topic else R.id.action_nav_home_to_nav_book, bundle) } homeF?.findNavController()?.navigate(if(isTopic) R.id.action_nav_home_to_nav_topic else R.id.action_nav_home_to_nav_book, bundle)
} }
} }