66
77package org.readium.r2.testapp.bookshelf
88
9- import android.Manifest
10- import android.content.Intent
11- import android.content.pm.PackageManager
129import android.graphics.Rect
1310import android.net.Uri
1411import android.os.Bundle
15- import android.provider.Settings
1612import android.text.TextUtils
1713import android.view.LayoutInflater
1814import android.view.View
@@ -22,7 +18,6 @@ import android.widget.EditText
2218import androidx.activity.result.ActivityResultLauncher
2319import androidx.activity.result.contract.ActivityResultContracts
2420import androidx.appcompat.app.AlertDialog
25- import androidx.core.content.ContextCompat
2621import androidx.fragment.app.Fragment
2722import androidx.fragment.app.viewModels
2823import androidx.recyclerview.widget.RecyclerView
@@ -37,26 +32,15 @@ import org.readium.r2.testapp.domain.model.Book
3732import org.readium.r2.testapp.opds.GridAutoFitLayoutManager
3833import org.readium.r2.testapp.reader.ReaderContract
3934
40-
4135class BookshelfFragment : Fragment () {
4236
4337 private val bookshelfViewModel: BookshelfViewModel by viewModels()
4438 private lateinit var bookshelfAdapter: BookshelfAdapter
4539 private lateinit var documentPickerLauncher: ActivityResultLauncher <String >
4640 private lateinit var readerLauncher: ActivityResultLauncher <ReaderContract .Input >
47- private var permissionAsked: Boolean = false
4841 private var _binding : FragmentBookshelfBinding ? = null
4942 private val binding get() = _binding !!
5043
51- private val requestPermissionLauncher =
52- registerForActivityResult(
53- ActivityResultContracts .RequestPermission ()
54- ) { isGranted: Boolean ->
55- if (isGranted) {
56- importBooks()
57- }
58- }
59-
6044 override fun onCreateView (
6145 inflater : LayoutInflater ,
6246 container : ViewGroup ? ,
@@ -103,8 +87,6 @@ class BookshelfFragment : Fragment() {
10387 bookshelfAdapter.submitList(it)
10488 })
10589
106- importBooks()
107-
10890 // FIXME embedded dialogs like this are ugly
10991 binding.bookshelfAddBookFab.setOnClickListener {
11092 var selected = 0
@@ -181,57 +163,6 @@ class BookshelfFragment : Fragment() {
181163 }
182164 }
183165
184- private fun requestStoragePermission () {
185- if (shouldShowRequestPermissionRationale(Manifest .permission.WRITE_EXTERNAL_STORAGE )) {
186- Snackbar .make(
187- this .requireView(),
188- R .string.permission_external_new_explanation,
189- Snackbar .LENGTH_LONG
190- )
191- .setAction(R .string.permission_retry) {
192- requestPermissionLauncher.launch(Manifest .permission.WRITE_EXTERNAL_STORAGE )
193- }
194- .show()
195- } else {
196- // FIXME this is an ugly hack for when user has said don't ask again
197- if (permissionAsked) {
198- Snackbar .make(
199- this .requireView(),
200- R .string.permission_external_new_explanation,
201- Snackbar .LENGTH_INDEFINITE
202- )
203- .setAction(R .string.action_settings) {
204- Intent (Settings .ACTION_APPLICATION_DETAILS_SETTINGS ).apply {
205- addCategory(Intent .CATEGORY_DEFAULT )
206- data = Uri .parse(" package:${view?.context?.packageName} " )
207- }.run (::startActivity)
208- }
209- .setActionTextColor(
210- ContextCompat .getColor(
211- requireContext(),
212- R .color.snackbar_text_color
213- )
214- )
215- .show()
216- } else {
217- permissionAsked = true
218- requestPermissionLauncher.launch(Manifest .permission.WRITE_EXTERNAL_STORAGE )
219- }
220- }
221- }
222-
223- private fun importBooks () {
224- if (ContextCompat .checkSelfPermission(
225- requireContext(),
226- Manifest .permission.WRITE_EXTERNAL_STORAGE
227- )
228- == PackageManager .PERMISSION_GRANTED
229- ) {
230- bookshelfViewModel.copySamplesFromAssetsToStorage()
231- } else requestStoragePermission()
232-
233- }
234-
235166 private fun deleteBook (book : Book ) {
236167 bookshelfViewModel.deleteBook(book)
237168 }
0 commit comments