|
|
@ -5,9 +5,8 @@ import android.app.Activity |
|
|
|
import android.content.ActivityNotFoundException |
|
|
|
import android.content.ActivityNotFoundException |
|
|
|
import android.content.Intent |
|
|
|
import android.content.Intent |
|
|
|
import android.os.Bundle |
|
|
|
import android.os.Bundle |
|
|
|
import android.view.Menu |
|
|
|
import android.util.DisplayMetrics |
|
|
|
import android.view.MenuItem |
|
|
|
import android.view.* |
|
|
|
import android.view.SubMenu |
|
|
|
|
|
|
|
import androidx.appcompat.widget.PopupMenu |
|
|
|
import androidx.appcompat.widget.PopupMenu |
|
|
|
import androidx.appcompat.widget.SearchView |
|
|
|
import androidx.appcompat.widget.SearchView |
|
|
|
import androidx.core.content.FileProvider |
|
|
|
import androidx.core.content.FileProvider |
|
|
@ -19,6 +18,7 @@ import androidx.recyclerview.widget.LinearLayoutManager |
|
|
|
import io.legado.app.App |
|
|
|
import io.legado.app.App |
|
|
|
import io.legado.app.BuildConfig |
|
|
|
import io.legado.app.BuildConfig |
|
|
|
import io.legado.app.R |
|
|
|
import io.legado.app.R |
|
|
|
|
|
|
|
import io.legado.app.base.BaseDialogFragment |
|
|
|
import io.legado.app.base.VMBaseActivity |
|
|
|
import io.legado.app.base.VMBaseActivity |
|
|
|
import io.legado.app.constant.AppPattern |
|
|
|
import io.legado.app.constant.AppPattern |
|
|
|
import io.legado.app.constant.EventBus |
|
|
|
import io.legado.app.constant.EventBus |
|
|
@ -40,8 +40,12 @@ import io.legado.app.ui.widget.recycler.VerticalDivider |
|
|
|
import io.legado.app.ui.widget.text.AutoCompleteTextView |
|
|
|
import io.legado.app.ui.widget.text.AutoCompleteTextView |
|
|
|
import io.legado.app.utils.* |
|
|
|
import io.legado.app.utils.* |
|
|
|
import kotlinx.android.synthetic.main.activity_book_source.* |
|
|
|
import kotlinx.android.synthetic.main.activity_book_source.* |
|
|
|
|
|
|
|
import kotlinx.android.synthetic.main.activity_book_source.recycler_view |
|
|
|
import kotlinx.android.synthetic.main.dialog_edit_text.view.* |
|
|
|
import kotlinx.android.synthetic.main.dialog_edit_text.view.* |
|
|
|
|
|
|
|
import kotlinx.android.synthetic.main.dialog_progressbar_view.* |
|
|
|
|
|
|
|
import kotlinx.android.synthetic.main.dialog_progressbar_view.tv_footer_left |
|
|
|
import kotlinx.android.synthetic.main.view_search.* |
|
|
|
import kotlinx.android.synthetic.main.view_search.* |
|
|
|
|
|
|
|
import org.jetbrains.anko.sdk27.listeners.onClick |
|
|
|
import org.jetbrains.anko.startActivity |
|
|
|
import org.jetbrains.anko.startActivity |
|
|
|
import org.jetbrains.anko.startActivityForResult |
|
|
|
import org.jetbrains.anko.startActivityForResult |
|
|
|
import org.jetbrains.anko.toast |
|
|
|
import org.jetbrains.anko.toast |
|
|
@ -66,12 +70,6 @@ class BookSourceActivity : VMBaseActivity<BookSourceViewModel>(R.layout.activity |
|
|
|
private var sort = 0 |
|
|
|
private var sort = 0 |
|
|
|
private var sortAscending = 0 |
|
|
|
private var sortAscending = 0 |
|
|
|
|
|
|
|
|
|
|
|
private val progressDialogBuilder by lazy { |
|
|
|
|
|
|
|
progressDialog("校验书源") { |
|
|
|
|
|
|
|
setCancelable(false) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
override fun onActivityCreated(savedInstanceState: Bundle?) { |
|
|
|
override fun onActivityCreated(savedInstanceState: Bundle?) { |
|
|
|
initRecyclerView() |
|
|
|
initRecyclerView() |
|
|
|
initSearchView() |
|
|
|
initSearchView() |
|
|
@ -270,30 +268,6 @@ class BookSourceActivity : VMBaseActivity<BookSourceViewModel>(R.layout.activity |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
override fun observeLiveBus() { |
|
|
|
|
|
|
|
observeEvent<Int>(EventBus.CHECK_INIT) { max-> |
|
|
|
|
|
|
|
progressDialogBuilder.max = max |
|
|
|
|
|
|
|
progressDialogBuilder.show() |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
observeEvent<Int>(EventBus.CHECK_UP_PROGRESS) { progress-> |
|
|
|
|
|
|
|
progressDialogBuilder.progress = progress |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
observeEvent<Int>(EventBus.CHECK_DONE) { |
|
|
|
|
|
|
|
if (progressDialogBuilder.isShowing) { |
|
|
|
|
|
|
|
progressDialogBuilder.progress = it |
|
|
|
|
|
|
|
progressDialogBuilder.max = it |
|
|
|
|
|
|
|
progressDialogBuilder.dismiss() |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
toast("校验完成!") |
|
|
|
|
|
|
|
groups.map { group-> |
|
|
|
|
|
|
|
if (group.contains("失效")) { |
|
|
|
|
|
|
|
search_view.setQuery("失效", true) |
|
|
|
|
|
|
|
toast("发现有失效书源,已为您自动筛选!") |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
override fun onMenuItemClick(item: MenuItem?): Boolean { |
|
|
|
override fun onMenuItemClick(item: MenuItem?): Boolean { |
|
|
|
when (item?.itemId) { |
|
|
|
when (item?.itemId) { |
|
|
|
R.id.menu_enable_selection -> viewModel.enableSelection(adapter.getSelection()) |
|
|
|
R.id.menu_enable_selection -> viewModel.enableSelection(adapter.getSelection()) |
|
|
@ -415,6 +389,24 @@ class BookSourceActivity : VMBaseActivity<BookSourceViewModel>(R.layout.activity |
|
|
|
}.show().applyTint() |
|
|
|
}.show().applyTint() |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
override fun observeLiveBus() { |
|
|
|
|
|
|
|
observeEvent<Int>(EventBus.CHECK_INIT) { max-> |
|
|
|
|
|
|
|
val bundle = Bundle() |
|
|
|
|
|
|
|
bundle.putInt("maxProgress", max) |
|
|
|
|
|
|
|
CheckSourceDialog().apply { |
|
|
|
|
|
|
|
arguments = bundle |
|
|
|
|
|
|
|
}.show(supportFragmentManager, "CheckDialog") |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
observeEvent<Int>(EventBus.CHECK_DONE) { |
|
|
|
|
|
|
|
groups.map { group-> |
|
|
|
|
|
|
|
if (group.contains("失效")) { |
|
|
|
|
|
|
|
search_view.setQuery("失效", true) |
|
|
|
|
|
|
|
toast("发现有失效书源,已为您自动筛选!") |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
override fun upCountView() { |
|
|
|
override fun upCountView() { |
|
|
|
select_action_bar.upCountView(adapter.getSelection().size, adapter.getActualItemCount()) |
|
|
|
select_action_bar.upCountView(adapter.getSelection().size, adapter.getActualItemCount()) |
|
|
|
} |
|
|
|
} |
|
|
@ -509,4 +501,47 @@ class BookSourceActivity : VMBaseActivity<BookSourceViewModel>(R.layout.activity |
|
|
|
search_view.setQuery("", true) |
|
|
|
search_view.setQuery("", true) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class CheckSourceDialog : BaseDialogFragment() { |
|
|
|
|
|
|
|
override fun onStart() { |
|
|
|
|
|
|
|
super.onStart() |
|
|
|
|
|
|
|
val dm = DisplayMetrics() |
|
|
|
|
|
|
|
activity?.windowManager?.defaultDisplay?.getMetrics(dm) |
|
|
|
|
|
|
|
dialog?.window?.setLayout( |
|
|
|
|
|
|
|
(dm.widthPixels * 0.9).toInt(), |
|
|
|
|
|
|
|
(dm.heightPixels * 0.14).toInt() |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
dialog?.setCancelable(false) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
override fun onCreateView( |
|
|
|
|
|
|
|
inflater: LayoutInflater, |
|
|
|
|
|
|
|
container: ViewGroup?, |
|
|
|
|
|
|
|
savedInstanceState: Bundle? |
|
|
|
|
|
|
|
): View? { |
|
|
|
|
|
|
|
return inflater.inflate(R.layout.dialog_progressbar_view, container) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) { |
|
|
|
|
|
|
|
arguments?.let { bundle -> |
|
|
|
|
|
|
|
val maxProgress = bundle.getInt("maxProgress") |
|
|
|
|
|
|
|
ck_progress_text.text = getString(R.string.progress_show, "", 0, maxProgress) |
|
|
|
|
|
|
|
ck_progress.max = maxProgress |
|
|
|
|
|
|
|
observeEvent<Int>(EventBus.CHECK_UP_PROGRESS) { progress-> |
|
|
|
|
|
|
|
ck_progress.progress = progress |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
observeEvent<String>(EventBus.CHECK_UP_PROGRESS_STRING) { |
|
|
|
|
|
|
|
ck_progress_text.text = it |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
observeEvent<Int>(EventBus.CHECK_DONE) { |
|
|
|
|
|
|
|
dismiss() |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
tv_footer_left.onClick { |
|
|
|
|
|
|
|
CheckSource.stop(requireContext()).apply { |
|
|
|
|
|
|
|
dismiss() |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |