|
|
|
@ -1,9 +1,12 @@
|
|
|
|
package org.koitharu.kotatsu.local.ui
|
|
|
|
package org.koitharu.kotatsu.local.ui
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import android.Manifest
|
|
|
|
|
|
|
|
import android.os.Build
|
|
|
|
import android.os.Bundle
|
|
|
|
import android.os.Bundle
|
|
|
|
import android.view.Menu
|
|
|
|
import android.view.Menu
|
|
|
|
import android.view.MenuItem
|
|
|
|
import android.view.MenuItem
|
|
|
|
import android.view.View
|
|
|
|
import android.view.View
|
|
|
|
|
|
|
|
import androidx.activity.result.contract.ActivityResultContracts
|
|
|
|
import androidx.appcompat.view.ActionMode
|
|
|
|
import androidx.appcompat.view.ActionMode
|
|
|
|
import androidx.core.net.toFile
|
|
|
|
import androidx.core.net.toFile
|
|
|
|
import androidx.core.net.toUri
|
|
|
|
import androidx.core.net.toUri
|
|
|
|
@ -12,9 +15,11 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
|
|
|
import com.google.android.material.snackbar.Snackbar
|
|
|
|
import com.google.android.material.snackbar.Snackbar
|
|
|
|
import org.koitharu.kotatsu.R
|
|
|
|
import org.koitharu.kotatsu.R
|
|
|
|
import org.koitharu.kotatsu.core.ui.list.ListSelectionController
|
|
|
|
import org.koitharu.kotatsu.core.ui.list.ListSelectionController
|
|
|
|
|
|
|
|
import org.koitharu.kotatsu.core.ui.widgets.TipView
|
|
|
|
import org.koitharu.kotatsu.core.util.ShareHelper
|
|
|
|
import org.koitharu.kotatsu.core.util.ShareHelper
|
|
|
|
import org.koitharu.kotatsu.core.util.ext.addMenuProvider
|
|
|
|
import org.koitharu.kotatsu.core.util.ext.addMenuProvider
|
|
|
|
import org.koitharu.kotatsu.core.util.ext.observeEvent
|
|
|
|
import org.koitharu.kotatsu.core.util.ext.observeEvent
|
|
|
|
|
|
|
|
import org.koitharu.kotatsu.core.util.ext.tryLaunch
|
|
|
|
import org.koitharu.kotatsu.core.util.ext.withArgs
|
|
|
|
import org.koitharu.kotatsu.core.util.ext.withArgs
|
|
|
|
import org.koitharu.kotatsu.databinding.FragmentListBinding
|
|
|
|
import org.koitharu.kotatsu.databinding.FragmentListBinding
|
|
|
|
import org.koitharu.kotatsu.filter.ui.FilterOwner
|
|
|
|
import org.koitharu.kotatsu.filter.ui.FilterOwner
|
|
|
|
@ -23,9 +28,23 @@ import org.koitharu.kotatsu.filter.ui.sheet.FilterSheetFragment
|
|
|
|
import org.koitharu.kotatsu.list.ui.MangaListFragment
|
|
|
|
import org.koitharu.kotatsu.list.ui.MangaListFragment
|
|
|
|
import org.koitharu.kotatsu.parsers.model.MangaSource
|
|
|
|
import org.koitharu.kotatsu.parsers.model.MangaSource
|
|
|
|
import org.koitharu.kotatsu.remotelist.ui.RemoteListFragment
|
|
|
|
import org.koitharu.kotatsu.remotelist.ui.RemoteListFragment
|
|
|
|
|
|
|
|
import org.koitharu.kotatsu.settings.storage.RequestStorageManagerPermissionContract
|
|
|
|
|
|
|
|
import org.koitharu.kotatsu.settings.storage.directories.MangaDirectoriesActivity
|
|
|
|
|
|
|
|
|
|
|
|
class LocalListFragment : MangaListFragment(), FilterOwner {
|
|
|
|
class LocalListFragment : MangaListFragment(), FilterOwner {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private val permissionRequestLauncher = registerForActivityResult(
|
|
|
|
|
|
|
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
|
|
|
|
|
|
|
|
RequestStorageManagerPermissionContract()
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
ActivityResultContracts.RequestPermission()
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
) {
|
|
|
|
|
|
|
|
if (it) {
|
|
|
|
|
|
|
|
viewModel.onRefresh()
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
init {
|
|
|
|
init {
|
|
|
|
withArgs(1) {
|
|
|
|
withArgs(1) {
|
|
|
|
putSerializable(
|
|
|
|
putSerializable(
|
|
|
|
@ -54,6 +73,16 @@ class LocalListFragment : MangaListFragment(), FilterOwner {
|
|
|
|
FilterSheetFragment.show(childFragmentManager)
|
|
|
|
FilterSheetFragment.show(childFragmentManager)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
override fun onPrimaryButtonClick(tipView: TipView) {
|
|
|
|
|
|
|
|
if (!permissionRequestLauncher.tryLaunch(Manifest.permission.READ_EXTERNAL_STORAGE)) {
|
|
|
|
|
|
|
|
Snackbar.make(tipView, R.string.operation_not_supported, Snackbar.LENGTH_SHORT).show()
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
override fun onSecondaryButtonClick(tipView: TipView) {
|
|
|
|
|
|
|
|
startActivity(MangaDirectoriesActivity.newIntent(tipView.context))
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
override fun onScrolledToEnd() = viewModel.loadNextPage()
|
|
|
|
override fun onScrolledToEnd() = viewModel.loadNextPage()
|
|
|
|
|
|
|
|
|
|
|
|
override fun onCreateActionMode(
|
|
|
|
override fun onCreateActionMode(
|
|
|
|
|