|  |  |  | @ -5,19 +5,19 @@ import android.content.Intent | 
			
		
	
		
			
				
					|  |  |  |  | import android.os.Bundle | 
			
		
	
		
			
				
					|  |  |  |  | import android.view.View | 
			
		
	
		
			
				
					|  |  |  |  | import androidx.fragment.app.activityViewModels | 
			
		
	
		
			
				
					|  |  |  |  | import androidx.recyclerview.widget.LinearLayoutManager | 
			
		
	
		
			
				
					|  |  |  |  | import io.legado.app.R | 
			
		
	
		
			
				
					|  |  |  |  | import io.legado.app.base.VMBaseFragment | 
			
		
	
		
			
				
					|  |  |  |  | import io.legado.app.data.appDb | 
			
		
	
		
			
				
					|  |  |  |  | import io.legado.app.data.entities.Bookmark | 
			
		
	
		
			
				
					|  |  |  |  | import io.legado.app.databinding.FragmentBookmarkBinding | 
			
		
	
		
			
				
					|  |  |  |  | import io.legado.app.lib.theme.primaryColor | 
			
		
	
		
			
				
					|  |  |  |  | import io.legado.app.ui.widget.recycler.UpLinearLayoutManager | 
			
		
	
		
			
				
					|  |  |  |  | import io.legado.app.ui.widget.recycler.VerticalDivider | 
			
		
	
		
			
				
					|  |  |  |  | import io.legado.app.utils.setEdgeEffectColor | 
			
		
	
		
			
				
					|  |  |  |  | import io.legado.app.utils.showDialogFragment | 
			
		
	
		
			
				
					|  |  |  |  | import io.legado.app.utils.viewbindingdelegate.viewBinding | 
			
		
	
		
			
				
					|  |  |  |  | import kotlinx.coroutines.Dispatchers | 
			
		
	
		
			
				
					|  |  |  |  | import kotlinx.coroutines.Dispatchers.IO | 
			
		
	
		
			
				
					|  |  |  |  | import kotlinx.coroutines.delay | 
			
		
	
		
			
				
					|  |  |  |  | import kotlinx.coroutines.launch | 
			
		
	
		
			
				
					|  |  |  |  | import kotlinx.coroutines.withContext | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -27,19 +27,22 @@ class BookmarkFragment : VMBaseFragment<TocViewModel>(R.layout.fragment_bookmark | 
			
		
	
		
			
				
					|  |  |  |  |     TocViewModel.BookmarkCallBack { | 
			
		
	
		
			
				
					|  |  |  |  |     override val viewModel by activityViewModels<TocViewModel>() | 
			
		
	
		
			
				
					|  |  |  |  |     private val binding by viewBinding(FragmentBookmarkBinding::bind) | 
			
		
	
		
			
				
					|  |  |  |  |     private val mLayoutManager by lazy { UpLinearLayoutManager(requireContext()) } | 
			
		
	
		
			
				
					|  |  |  |  |     private val adapter by lazy { BookmarkAdapter(requireContext(), this) } | 
			
		
	
		
			
				
					|  |  |  |  |     private var durChapterIndex = 0 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) { | 
			
		
	
		
			
				
					|  |  |  |  |         viewModel.bookMarkCallBack = this | 
			
		
	
		
			
				
					|  |  |  |  |         initRecyclerView() | 
			
		
	
		
			
				
					|  |  |  |  |         viewModel.bookData.observe(this) { | 
			
		
	
		
			
				
					|  |  |  |  |             durChapterIndex = it.durChapterIndex | 
			
		
	
		
			
				
					|  |  |  |  |             upBookmark(null) | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     private fun initRecyclerView() { | 
			
		
	
		
			
				
					|  |  |  |  |         binding.recyclerView.setEdgeEffectColor(primaryColor) | 
			
		
	
		
			
				
					|  |  |  |  |         binding.recyclerView.layoutManager = LinearLayoutManager(requireContext()) | 
			
		
	
		
			
				
					|  |  |  |  |         binding.recyclerView.layoutManager = mLayoutManager | 
			
		
	
		
			
				
					|  |  |  |  |         binding.recyclerView.addItemDecoration(VerticalDivider(requireContext())) | 
			
		
	
		
			
				
					|  |  |  |  |         binding.recyclerView.adapter = adapter | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
	
		
			
				
					|  |  |  | @ -54,7 +57,16 @@ class BookmarkFragment : VMBaseFragment<TocViewModel>(R.layout.fragment_bookmark | 
			
		
	
		
			
				
					|  |  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |  |             }.let { | 
			
		
	
		
			
				
					|  |  |  |  |                 adapter.setItems(it) | 
			
		
	
		
			
				
					|  |  |  |  |                 delay(100) | 
			
		
	
		
			
				
					|  |  |  |  |                 var scrollPos = 0 | 
			
		
	
		
			
				
					|  |  |  |  |                 withContext(Dispatchers.Default) { | 
			
		
	
		
			
				
					|  |  |  |  |                     adapter.getItems().forEachIndexed { index, bookmark -> | 
			
		
	
		
			
				
					|  |  |  |  |                         if (bookmark.chapterIndex >= durChapterIndex) { | 
			
		
	
		
			
				
					|  |  |  |  |                             return@withContext | 
			
		
	
		
			
				
					|  |  |  |  |                         } | 
			
		
	
		
			
				
					|  |  |  |  |                         scrollPos = index | 
			
		
	
		
			
				
					|  |  |  |  |                     } | 
			
		
	
		
			
				
					|  |  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |  |                 mLayoutManager.scrollToPositionWithOffset(scrollPos, 0) | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
	
		
			
				
					|  |  |  | 
 |