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