mirror of
https://github.com/gedoor/legado.git
synced 2024-09-01 09:34:25 +08:00
Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
cff73c67dc
@ -73,6 +73,7 @@ import java.io.FileOutputStream
|
|||||||
import java.nio.charset.Charset
|
import java.nio.charset.Charset
|
||||||
import java.util.concurrent.ConcurrentHashMap
|
import java.util.concurrent.ConcurrentHashMap
|
||||||
import kotlin.coroutines.coroutineContext
|
import kotlin.coroutines.coroutineContext
|
||||||
|
import kotlin.math.min
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 导出书籍服务
|
* 导出书籍服务
|
||||||
@ -363,7 +364,7 @@ class ExportBookService : BaseService() {
|
|||||||
* @author Discut
|
* @author Discut
|
||||||
*/
|
*/
|
||||||
@SuppressLint("ObsoleteSdkInt")
|
@SuppressLint("ObsoleteSdkInt")
|
||||||
private fun paresScope(scope: String): IntArray {
|
private fun paresScope(scope: String): Set<Int> {
|
||||||
val split = scope.split(",")
|
val split = scope.split(",")
|
||||||
|
|
||||||
@Suppress("RemoveExplicitTypeArguments")
|
@Suppress("RemoveExplicitTypeArguments")
|
||||||
@ -387,7 +388,7 @@ class ExportBookService : BaseService() {
|
|||||||
for (i in left..right)
|
for (i in left..right)
|
||||||
result.add(i - 1)
|
result.add(i - 1)
|
||||||
}
|
}
|
||||||
return result.toIntArray()
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -702,7 +703,7 @@ class ExportBookService : BaseService() {
|
|||||||
* @param scope 导出范围
|
* @param scope 导出范围
|
||||||
* @param size epub 文件包含最大章节数
|
* @param size epub 文件包含最大章节数
|
||||||
*/
|
*/
|
||||||
inner class CustomExporter(private val scope: IntArray, private val size: Int) {
|
inner class CustomExporter(private var scope: Set<Int>, private val size: Int) {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 导出Epub
|
* 导出Epub
|
||||||
@ -717,6 +718,8 @@ class ExportBookService : BaseService() {
|
|||||||
exportMsg.remove(book.bookUrl)
|
exportMsg.remove(book.bookUrl)
|
||||||
postEvent(EventBus.EXPORT_BOOK, book.bookUrl)
|
postEvent(EventBus.EXPORT_BOOK, book.bookUrl)
|
||||||
val currentTimeMillis = System.currentTimeMillis()
|
val currentTimeMillis = System.currentTimeMillis()
|
||||||
|
val count = appDb.bookChapterDao.getChapterCount(book.bookUrl)
|
||||||
|
scope = scope.filter { it < count }.toHashSet()
|
||||||
when (path.isContentScheme()) {
|
when (path.isContentScheme()) {
|
||||||
true -> {
|
true -> {
|
||||||
val uri = Uri.parse(path)
|
val uri = Uri.parse(path)
|
||||||
@ -812,7 +815,7 @@ class ExportBookService : BaseService() {
|
|||||||
val contentProcessor = ContentProcessor.get(book.name, book.origin)
|
val contentProcessor = ContentProcessor.get(book.name, book.origin)
|
||||||
var chapterList: MutableList<BookChapter> = ArrayList()
|
var chapterList: MutableList<BookChapter> = ArrayList()
|
||||||
appDb.bookChapterDao.getChapterList(book.bookUrl).forEachIndexed { index, chapter ->
|
appDb.bookChapterDao.getChapterList(book.bookUrl).forEachIndexed { index, chapter ->
|
||||||
if (scope.indexOf(index) >= 0) {
|
if (scope.contains(index)) {
|
||||||
chapterList.add(chapter)
|
chapterList.add(chapter)
|
||||||
}
|
}
|
||||||
if (scope.size == chapterList.size) {
|
if (scope.size == chapterList.size) {
|
||||||
@ -825,7 +828,7 @@ class ExportBookService : BaseService() {
|
|||||||
}
|
}
|
||||||
chapterList = chapterList.subList(
|
chapterList = chapterList.subList(
|
||||||
epubBookIndex * size,
|
epubBookIndex * size,
|
||||||
if ((epubBookIndex + 1) * size > scope.size) scope.size else (epubBookIndex + 1) * size
|
min(scope.size, (epubBookIndex + 1) * size)
|
||||||
)
|
)
|
||||||
chapterList.forEachIndexed { index, chapter ->
|
chapterList.forEachIndexed { index, chapter ->
|
||||||
coroutineContext.ensureActive()
|
coroutineContext.ensureActive()
|
||||||
|
@ -6,6 +6,7 @@ import android.os.Build
|
|||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import io.legado.app.base.adapter.ItemViewHolder
|
import io.legado.app.base.adapter.ItemViewHolder
|
||||||
import io.legado.app.base.adapter.RecyclerAdapter
|
import io.legado.app.base.adapter.RecyclerAdapter
|
||||||
|
import io.legado.app.constant.AppLog
|
||||||
import io.legado.app.databinding.ItemFontBinding
|
import io.legado.app.databinding.ItemFontBinding
|
||||||
import io.legado.app.utils.*
|
import io.legado.app.utils.*
|
||||||
import java.io.File
|
import java.io.File
|
||||||
@ -45,7 +46,7 @@ class FontAdapter(context: Context, curFilePath: String, val callBack: CallBack)
|
|||||||
tvFont.typeface = typeface
|
tvFont.typeface = typeface
|
||||||
}.onFailure {
|
}.onFailure {
|
||||||
it.printOnDebug()
|
it.printOnDebug()
|
||||||
context.toastOnUi("Read ${item.name} Error: ${it.localizedMessage}")
|
AppLog.put("读取字体 ${item.name} 出错\n${it.localizedMessage}", it, true)
|
||||||
}
|
}
|
||||||
tvFont.text = item.name
|
tvFont.text = item.name
|
||||||
root.setOnClickListener { callBack.onFontSelect(item) }
|
root.setOnClickListener { callBack.onFontSelect(item) }
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
android:id="@+id/cb_all_export"
|
android:id="@+id/cb_all_export"
|
||||||
android:layout_width="20dp"
|
android:layout_width="20dp"
|
||||||
android:layout_height="20dp"
|
android:layout_height="20dp"
|
||||||
|
android:layout_gravity="center"
|
||||||
android:layout_marginStart="6dp"
|
android:layout_marginStart="6dp"
|
||||||
android:layout_marginEnd="16dp" />
|
android:layout_marginEnd="16dp" />
|
||||||
|
|
||||||
@ -43,6 +44,7 @@
|
|||||||
android:id="@+id/cb_select_export"
|
android:id="@+id/cb_select_export"
|
||||||
android:layout_width="20dp"
|
android:layout_width="20dp"
|
||||||
android:layout_height="20dp"
|
android:layout_height="20dp"
|
||||||
|
android:layout_gravity="center"
|
||||||
android:layout_marginStart="6dp"
|
android:layout_marginStart="6dp"
|
||||||
android:layout_marginEnd="16dp" />
|
android:layout_marginEnd="16dp" />
|
||||||
|
|
||||||
@ -71,8 +73,8 @@
|
|||||||
android:id="@+id/et_epub_filename"
|
android:id="@+id/et_epub_filename"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:inputType="text"
|
|
||||||
android:enabled="false"
|
android:enabled="false"
|
||||||
|
android:inputType="text"
|
||||||
tools:ignore="SpeakableTextPresentCheck,TouchTargetSizeCheck" />
|
tools:ignore="SpeakableTextPresentCheck,TouchTargetSizeCheck" />
|
||||||
|
|
||||||
</io.legado.app.ui.widget.text.TextInputLayout>
|
</io.legado.app.ui.widget.text.TextInputLayout>
|
||||||
|
Loading…
Reference in New Issue
Block a user