From 32ecebb1ad39b05a4858f95d1e07a89e9ed61c16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BA=90=E6=96=87=E9=9B=A8?= <41315874+fumiama@users.noreply.github.com> Date: Thu, 30 Nov 2023 01:36:36 +0900 Subject: [PATCH] =?UTF-8?q?v2.0.5=20=E4=BF=AE=E5=A4=8D=201.=20=E4=BB=8E?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E9=A1=B5=E8=BF=9B=E5=85=A5=E6=A0=87=E7=AD=BE?= =?UTF-8?q?=E5=86=8D=E8=BF=94=E5=9B=9E=E5=90=8E=E9=98=85=E8=AF=BB=E7=A9=BA?= =?UTF-8?q?=E6=BC=AB=E7=94=BB=E9=97=AA=E9=80=80=202.=20=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E9=98=85=E8=AF=BB/=E4=B8=8B=E8=BD=BD=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=99=A8=E8=BF=94=E5=9B=9Esize=E4=B8=8E=E5=AE=9E=E9=99=85?= =?UTF-8?q?=E4=B8=8D=E4=B8=80=E8=87=B4=E7=9A=84=E6=BC=AB=E7=94=BB(?= =?UTF-8?q?=E5=A5=88=E5=A5=88=E4=B8=8E=E8=96=B0=E7=9A=84SM=E6=97=A5?= =?UTF-8?q?=E8=AE=B0=20=E7=AC=AC=E4=B8=80=E8=AF=9D)=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=201.=20=E5=8A=A8=E6=80=81=E8=AE=BE=E7=BD=AE=E6=B2=89=E6=B5=B8?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E6=A0=8F=E9=AB=98=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 8 ++--- .../top/fumiama/copymanga/MainActivity.kt | 30 +--------------- .../fumiama/copymanga/manga/MangaDlTools.kt | 34 ++++++++++++------- .../template/http/AutoDownloadHandler.kt | 4 +-- .../top/fumiama/copymanga/tools/ui/UITools.kt | 9 +++++ .../fumiama/copymanga/ui/book/BookFragment.kt | 4 ++- .../top/fumiama/copymanga/ui/vm/VMHandler.kt | 5 ++- .../fumiama/copymanga/update/SimpleKanban.kt | 2 +- 8 files changed, 46 insertions(+), 50 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 7d9a344..631eb83 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -8,8 +8,8 @@ android { applicationId 'top.fumiama.copymanga' minSdkVersion 23 targetSdkVersion 34 - versionCode 40 - versionName '2.0.4' + versionCode 41 + versionName '2.0.5' resConfigs 'zh', 'zh-rCN' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" @@ -60,8 +60,8 @@ dependencies { implementation 'androidx.legacy:legacy-support-v4:1.0.0' implementation 'com.google.android.material:material:1.10.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' - implementation 'androidx.navigation:navigation-fragment-ktx:2.7.4' - implementation 'androidx.navigation:navigation-ui-ktx:2.7.4' + implementation 'androidx.navigation:navigation-fragment-ktx:2.7.5' + implementation 'androidx.navigation:navigation-ui-ktx:2.7.5' testImplementation 'junit:junit:4.13.2' implementation "androidx.preference:preference-ktx:1.2.1" implementation 'com.afollestad.material-dialogs:input:3.3.0' diff --git a/app/src/main/java/top/fumiama/copymanga/MainActivity.kt b/app/src/main/java/top/fumiama/copymanga/MainActivity.kt index 533eef7..7c2a241 100644 --- a/app/src/main/java/top/fumiama/copymanga/MainActivity.kt +++ b/app/src/main/java/top/fumiama/copymanga/MainActivity.kt @@ -76,8 +76,7 @@ class MainActivity : AppCompatActivity() { setContentView(R.layout.activity_main) setSupportActionBar(toolbar) - //translucentStatusBar() - //coordiv.layoutParams.height = getStatusBarHeight() + coordiv.layoutParams.height = UITools.getStatusBarHeight(this) navController = findNavController(R.id.nav_host_fragment) appBarConfiguration = AppBarConfiguration( @@ -323,33 +322,6 @@ class MainActivity : AppCompatActivity() { .start(this) } - /*private fun translucentStatusBar() { - //添加Flag把状态栏设为可绘制模式 - window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS) - //如果为全透明模式,取消设置Window半透明的Flag - window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS) - //设置状态栏为透明 - window.statusBarColor = Color.TRANSPARENT - //设置window的状态栏不可见 - window.decorView.systemUiVisibility = - View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN - //view不根据系统窗口来调整自己的布局 - val mContentView: ViewGroup = window.findViewById(Window.ID_ANDROID_CONTENT) as ViewGroup - val mChildView: View = mContentView.getChildAt(0) - ViewCompat.requestApplyInsets(mChildView) - - coordiv.layoutParams.height = getStatusBarHeight() - }*/ - - /*private fun getStatusBarHeight() = - resources.getDimensionPixelOffset( - resources.getIdentifier( - "status_bar_height", - "dimen", - "android" - ) - )*/ - private fun checkUpdate(ignoreSkip: Boolean) { Thread{ Update.checkUpdate(this, toolsBox, ignoreSkip) diff --git a/app/src/main/java/top/fumiama/copymanga/manga/MangaDlTools.kt b/app/src/main/java/top/fumiama/copymanga/manga/MangaDlTools.kt index a24b40c..054db36 100644 --- a/app/src/main/java/top/fumiama/copymanga/manga/MangaDlTools.kt +++ b/app/src/main/java/top/fumiama/copymanga/manga/MangaDlTools.kt @@ -21,14 +21,22 @@ class MangaDlTools { fun downloadChapterInVol(url: CharSequence, chapterName: CharSequence, group: CharSequence, index: Int){ Log.d("MyMDT", "下载:$url, index:$index") - AutoDownloadThread(url.toString()){ - Gson().fromJson(it?.decodeToString(), Chapter2Return::class.java)?.let { - if(it.results.chapter.words.size != it.results.chapter.size) downloadChapterInVol(url, chapterName, group, index) - else getChapterInfo(it, index, chapterName, group) + AutoDownloadThread(url.toString()){ data -> + Gson().fromJson(data?.decodeToString(), Chapter2Return::class.java)?.let { + getChapterInfo(it, index, chapterName, group) } }.start() } + @Synchronized private fun prepareDownloadListener() { + pool?.setOnDownloadListener { fileName: String, isSuccess: Boolean -> + indexMap[fileName]?.let { onDownloadedListener?.handleMessage(it, isSuccess) } + } + pool?.setOnPageDownloadListener { fileName: String, downloaded: Int, total: Int, isSuccess: Boolean -> + indexMap[fileName]?.let { onDownloadedListener?.handleMessage(it, downloaded, total, isSuccess) } + } + } + @Synchronized private fun setPool(comicName: String, group: CharSequence) { if(pool == null || grp != group) { pool = DownloadPool(File( @@ -36,6 +44,7 @@ class MangaDlTools { "$comicName/$group" ).absolutePath) grp = group + prepareDownloadListener() } } @@ -49,12 +58,6 @@ class MangaDlTools { setPool(chapter2Return.results.comic.name, group) setIndexMap(f, index) pool?.plusAssign(DownloadPool.Quest(f, getMangaUrls(chapter2Return))) - pool?.setOnDownloadListener { fileName: String, isSuccess: Boolean -> - indexMap[fileName]?.let { onDownloadedListener?.handleMessage(it, isSuccess) } - } - pool?.setOnPageDownloadListener { fileName: String, downloaded: Int, total: Int, isSuccess: Boolean -> - indexMap[fileName]?.let { onDownloadedListener?.handleMessage(it, downloaded, total, isSuccess) } - } } } @@ -62,10 +65,17 @@ class MangaDlTools { var re: Array = arrayOf() val hm: HashMap = hashMapOf() val chapter = chapter2Return.results.chapter - for(i in 0 until chapter.size) { + if(chapter.words.size < chapter.contents.size) { + chapter.words = chapter.words.toMutableList().apply { + chapter.contents.indices.forEach { + if(!contains(it)) plusAssign(it) + } + }.toIntArray() + } + for(i in 0 until chapter.contents.size) { hm[chapter.words[i]] = chapter.contents[i].url } - for(i in 0 until chapter.size){ + for(i in 0 until chapter.contents.size){ re += hm[i]?:"" } return re 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 3170dba..1da6e33 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 @@ -75,7 +75,7 @@ open class AutoDownloadHandler(private val url: String, private val jsonClass: C if(exit) return if(it == null) { if (cnt++>3) return - sleep(1000) + sleep(2000) dlThread() return } @@ -102,7 +102,7 @@ open class AutoDownloadHandler(private val url: String, private val jsonClass: C if(g.code == 200) sendEmptyMessage(0) else onError() Log.d("MyADH", "[${g.code}]${g.message}") - } else if(checkTimes++ > 10) timeThread?.canDo = false + } else if(checkTimes++ > 3) timeThread?.canDo = false } private fun setLayouts() { if(getGsonItem() == null) download() diff --git a/app/src/main/java/top/fumiama/copymanga/tools/ui/UITools.kt b/app/src/main/java/top/fumiama/copymanga/tools/ui/UITools.kt index 7f9c9a6..d3e96b9 100644 --- a/app/src/main/java/top/fumiama/copymanga/tools/ui/UITools.kt +++ b/app/src/main/java/top/fumiama/copymanga/tools/ui/UITools.kt @@ -133,5 +133,14 @@ class UITools(that: Context?, w: WeakReference? = null) { 0 } } + fun getStatusBarHeight(context: Context): Int { + val resources = context.resources + val resourceId = resources.getIdentifier("status_bar_height", "dimen", "android") + return if (resourceId > 0) { + resources.getDimensionPixelSize(resourceId) + } else { + 0 + } + } } } \ No newline at end of file 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 dcddfd2..46e669d 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 @@ -96,7 +96,9 @@ class BookFragment: NoBackRefreshFragment(R.layout.fragment_book) { i = p } setOnClickListener { - Reader.viewMangaAt(comic.name, i, bookHandler!!.urlArray) + bookHandler?.urlArray?.let { + Reader.viewMangaAt(comic.name, i, it) + } } } } 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 ec333e1..3b2fffb 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 @@ -135,9 +135,12 @@ class VMHandler(activity: ViewMangaActivity, url: String) : AutoDownloadHandler( override fun setGsonItem(gsonObj: Any): Boolean { super.setGsonItem(gsonObj) val m = gsonObj as Chapter2Return - if(m.results.chapter.words.size != m.results.chapter.size) { + if(m.results.chapter.words.size != m.results.chapter.contents.size) { return false } + if(m.results.chapter.words.size != m.results.chapter.size) { + m.results.chapter.size = m.results.chapter.words.size // 有时 size 不对 + } manga = m return true } 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 68f0fba..ba5d384 100644 --- a/app/src/main/java/top/fumiama/copymanga/update/SimpleKanban.kt +++ b/app/src/main/java/top/fumiama/copymanga/update/SimpleKanban.kt @@ -47,7 +47,7 @@ class SimpleKanban(private val client: Client, private val pwd: String) { //mu operator fun get(version: Int): String = if(client.initConnect()) { - client.sendMessage("${pwd}get${version}quit") + client.sendMessage("${pwd}get39quit") client.receiveRawMessage(36) //Welcome to simple kanban server. get val r = try { val firstRecv = client.receiveRawMessage(4)