diff --git a/app/build.gradle b/app/build.gradle index b48d038..667609b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -11,8 +11,8 @@ android { applicationId "top.fumiama.copymanga" minSdkVersion 23 targetSdkVersion 30 - versionCode 5 - versionName '1.1.3' + versionCode 7 + versionName '1.2.1' resConfigs "zh", "zh-rCN" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/app/src/main/java/top/fumiama/copymanga/activity/DlActivity.kt b/app/src/main/java/top/fumiama/copymanga/activity/DlActivity.kt index 59ae428..b7bab84 100644 --- a/app/src/main/java/top/fumiama/copymanga/activity/DlActivity.kt +++ b/app/src/main/java/top/fumiama/copymanga/activity/DlActivity.kt @@ -46,6 +46,7 @@ class DlActivity : Activity() { private var canDl = false private lateinit var toolsBox: ToolsBox lateinit var mangaDlTools: MangaDlTools + var multiSelect = false @ExperimentalStdlibApi @@ -92,7 +93,6 @@ class DlActivity : Activity() { if (!canDl) { checkedChapter -= dldChapter dldChapter = 0 - Toast.makeText(this, "当前章节下载完成后将会停止", Toast.LENGTH_SHORT).show() break } } @@ -100,7 +100,7 @@ class DlActivity : Activity() { haveDlStarted = false canDl = false } - handler.sendEmptyMessage(8) + handler.sendEmptyMessage(8) //set dl card color to blue } @ExperimentalStdlibApi @@ -120,11 +120,7 @@ class DlActivity : Activity() { }) dllazys.onScrollListener = object : LazyScrollView.OnScrollListener { override fun onBottom() {} - - override fun onScroll() { - if (csdwn.translationX == 0f) hideDlCard() - } - + override fun onScroll() { if (csdwn.translationX == 0f) hideDlCard() } override fun onTop() {} } cdwn.setOnClickListener { @@ -136,7 +132,7 @@ class DlActivity : Activity() { else { haveDlStarted = true canDl = true - handler.sendEmptyMessage(9) + handler.sendEmptyMessage(9) //set dl card color to red Toast.makeText(this, "准备下载...", Toast.LENGTH_SHORT).show() fillChapters() Thread { dlThead { downloadChapterPages(it) } }.start() @@ -147,9 +143,15 @@ class DlActivity : Activity() { Thread { handler.sendEmptyMessage(4) }.start() return@setOnLongClickListener true } + isearch.setOnClickListener { showMultiSelectInfo() } analyzeStructure() } + private fun showMultiSelectInfo() { + toolsBox.buildInfo("进入多选模式?", "确定后,长按下载条可选中全部漫画,而不仅限于未下载者。", + "确定", null, "取消", { multiSelect = true }) + } + private fun analyzeStructure() { comicStructure?.let { for (group in it) { @@ -226,6 +228,7 @@ class DlActivity : Activity() { if (zipf.exists()) { tbv.tbtn.setBackgroundResource(R.drawable.rndbg_checked) tbv.tbtn.isChecked = false + tbv.tbtn.freezesText = true } ltbtn.ltbtn.addView(tbv) ltbtn.invalidate() diff --git a/app/src/main/java/top/fumiama/copymanga/activity/ViewMangaActivity.kt b/app/src/main/java/top/fumiama/copymanga/activity/ViewMangaActivity.kt index 39ceca0..9643f79 100644 --- a/app/src/main/java/top/fumiama/copymanga/activity/ViewMangaActivity.kt +++ b/app/src/main/java/top/fumiama/copymanga/activity/ViewMangaActivity.kt @@ -93,7 +93,7 @@ class ViewMangaActivity : Activity() { tt.canDo = true tt.start() ttitle.text = titleText - isearch.visibility = View.VISIBLE + //isearch.visibility = View.VISIBLE try { count = if (mangaZip != null) countZipItems() else imgUrls.size } catch (e: Exception) { diff --git a/app/src/main/java/top/fumiama/copymanga/handler/DlHandler.kt b/app/src/main/java/top/fumiama/copymanga/handler/DlHandler.kt index 5219ed4..09b0c3e 100644 --- a/app/src/main/java/top/fumiama/copymanga/handler/DlHandler.kt +++ b/app/src/main/java/top/fumiama/copymanga/handler/DlHandler.kt @@ -2,15 +2,13 @@ package top.fumiama.copymanga.handler import android.annotation.SuppressLint import android.os.Handler -import android.os.Looper import android.os.Message import android.widget.Toast +import android.widget.ToggleButton import kotlinx.android.synthetic.main.widget_downloadbar.* import top.fumiama.copymanga.R import top.fumiama.copymanga.activity.DlActivity -import top.fumiama.copymanga.activity.ViewMangaActivity.Companion.imgUrls import top.fumiama.copymanga.tool.MangaDlTools.Companion.wmdlt -import java.io.File import java.lang.ref.WeakReference class DlHandler(activity: DlActivity) : Handler() { @@ -39,20 +37,15 @@ class DlHandler(activity: DlActivity) : Handler() { -1 -> { d?.tbtnlist?.get(msg.arg1)?.setBackgroundResource(R.drawable.rndbg_error) d!!.dldChapter-- - //Looper.prepare() - Toast.makeText( - d, - "下载${d.tbtnlist[msg.arg1].textOn}失败", - Toast.LENGTH_SHORT - ).show() - //Looper.loop() + Toast.makeText(d, "下载${d.tbtnlist[msg.arg1].textOn}失败", Toast.LENGTH_SHORT).show() d.updateProgressBar() } 4 -> { d?.pdwn?.progress = 0 + val selectDownloaded = d?.multiSelect?:false if (d?.haveSElectAll == true) { for (i in d.tbtnlist.listIterator()) { - i.setBackgroundResource(R.drawable.toggle_button) + if(i.freezesText) i.setBackgroundResource(R.drawable.rndbg_checked) else i.setBackgroundResource(R.drawable.toggle_button) i.isChecked = false } d.haveSElectAll = false @@ -60,48 +53,35 @@ class DlHandler(activity: DlActivity) : Handler() { d.dldChapter = 0 } else { d?.let { - for (i in it.tbtnlist.listIterator()) { + val checkBtn = { i: ToggleButton, it: DlActivity -> i.setBackgroundResource(R.drawable.toggle_button) i.isChecked = true it.checkedChapter++ } + for (i in it.tbtnlist.listIterator()) { + if(selectDownloaded) checkBtn(i, it) + else if(!i.freezesText) checkBtn(i, it) + } } d?.haveSElectAll = true } d?.tdwn?.text = "${d?.dldChapter}/${d?.checkedChapter}" } 5 -> { - d?.updateProgressBar( - msg.arg2, - wmdlt?.get() - ?.getImgsCountByHash(d.tbtnUrlList[msg.arg1].substringAfterLast("/")) ?: 0 - ) + val size = d?.tbtnUrlList?.get(msg.arg1)?.let { wmdlt?.get()?.getImgsCountByHash(it.substringAfterLast("/")) }?:0 + d?.updateProgressBar(msg.arg2, size) if (!(msg.obj as Boolean)) { - //Looper.prepare() - Toast.makeText( - d, - "下载${d?.tbtnlist?.get(msg.arg1)?.textOn}的第${msg.arg2}页失败", - Toast.LENGTH_SHORT - ).show() - //Looper.loop() + Toast.makeText(d, "下载${d?.tbtnlist?.get(msg.arg1)?.textOn}的第${msg.arg2}页失败", Toast.LENGTH_SHORT).show() }else{ val progressTxt = d?.tdwn?.text.toString() - d?.tdwn?.text = "${progressTxt.substringBefore(" ")} 的第${msg.arg2}页" + d?.tdwn?.text = "${progressTxt.substringBefore(" ")} 的${msg.arg2}/${size}页" } } 6 -> d?.tdwn?.text = "${d?.dldChapter}/${d?.checkedChapter}" 7 -> d?.deleteChapters() 8 -> d?.cdwn?.setCardBackgroundColor(d.resources.getColor(R.color.colorBlue)) 9 -> d?.cdwn?.setCardBackgroundColor(d.resources.getColor(R.color.colorRed)) - 10 -> { - //Looper.prepare() - Toast.makeText( - d, - "下载${d?.tbtnlist?.get(msg.arg1)?.textOn}的第${msg.arg2}页失败,尝试重新下载...", - Toast.LENGTH_SHORT - ).show() - //Looper.loop() - } + 10 -> Toast.makeText(d, "下载${d?.tbtnlist?.get(msg.arg1)?.textOn}的第${msg.arg2}页失败,尝试重新下载...", Toast.LENGTH_SHORT).show() } } } \ No newline at end of file diff --git a/app/src/main/java/top/fumiama/copymanga/tool/MangaDlTools.kt b/app/src/main/java/top/fumiama/copymanga/tool/MangaDlTools.kt index 07f6d57..cdf7a9a 100644 --- a/app/src/main/java/top/fumiama/copymanga/tool/MangaDlTools.kt +++ b/app/src/main/java/top/fumiama/copymanga/tool/MangaDlTools.kt @@ -72,7 +72,7 @@ class MangaDlTools(activity: DlActivity) { sleep(2000) } } - if(tryTimes == 0) succeed = false + if(!s && tryTimes <= 0) succeed = false onDownloadedListener?.handleMessage(s, i + 1) zip.flush() if (exit) break diff --git a/app/src/main/res/layout/widget_titlebar.xml b/app/src/main/res/layout/widget_titlebar.xml index 83c3c28..d29959c 100644 --- a/app/src/main/res/layout/widget_titlebar.xml +++ b/app/src/main/res/layout/widget_titlebar.xml @@ -39,11 +39,9 @@ android:layout_height="28dp" android:layout_marginEnd="8dp" android:src="@drawable/ic_edit" - android:visibility="invisible" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintTop_toTopOf="parent" - tools:visibility="visible" /> + app:layout_constraintTop_toTopOf="parent" />