@@ -278,6 +278,10 @@ class BooksFragment : Fragment(), DrawerItem, OnViewHolderClickListener<BookView
278
278
R .id.books_context_menu_delete -> {
279
279
viewModel.deleteBookRequest(bookId)
280
280
}
281
+
282
+ R .id.books_context_menu_show_diff -> {
283
+ viewModel.showDiffBookRequest(bookId)
284
+ }
281
285
}
282
286
283
287
viewModel.appBar.toMode(APP_BAR_DEFAULT_MODE )
@@ -305,6 +309,35 @@ class BooksFragment : Fragment(), DrawerItem, OnViewHolderClickListener<BookView
305
309
pickFileForBookExport.launch(defaultFileName)
306
310
}
307
311
312
+ private fun showDiffDialog (book : BookView ) {
313
+ val dialogBinding = DialogBookDeleteBinding .inflate(LayoutInflater .from(context))
314
+
315
+ dialogBinding.deleteLinkedCheckbox.setOnCheckedChangeListener { _, isChecked ->
316
+ dialogBinding.deleteLinkedUrl.isEnabled = isChecked
317
+ }
318
+
319
+ val dialogClickListener = DialogInterface .OnClickListener { _, which ->
320
+ when (which) {
321
+ DialogInterface .BUTTON_POSITIVE -> {
322
+ val deleteLinked = dialogBinding.deleteLinkedCheckbox.isChecked
323
+ viewModel.deleteBook(book.book.id, deleteLinked)
324
+ }
325
+ }
326
+ }
327
+
328
+ val builder = MaterialAlertDialogBuilder (requireContext())
329
+ .setTitle(getString(R .string.delete_with_quoted_argument, book.book.name))
330
+ .setPositiveButton(R .string.delete, dialogClickListener)
331
+ .setNegativeButton(R .string.cancel, dialogClickListener)
332
+
333
+ if (book.syncedTo != null ) {
334
+ dialogBinding.deleteLinkedUrl.text = book.syncedTo.uri.toString()
335
+ builder.setView(dialogBinding.root)
336
+ }
337
+
338
+ dialog = builder.show()
339
+ }
340
+
308
341
private fun deleteBookDialog (book : BookView ) {
309
342
val dialogBinding = DialogBookDeleteBinding .inflate(LayoutInflater .from(context))
310
343
@@ -427,6 +460,12 @@ class BooksFragment : Fragment(), DrawerItem, OnViewHolderClickListener<BookView
427
460
}
428
461
})
429
462
463
+ viewModel.showDiffEvent.observeSingle(viewLifecycleOwner, Observer { bookView ->
464
+ if (bookView != null ) {
465
+ showDiffDialog(bookView)
466
+ }
467
+ })
468
+
430
469
viewModel.bookToRenameEvent.observeSingle(viewLifecycleOwner, Observer { bookView ->
431
470
if (bookView != null ) {
432
471
renameBookDialog(bookView)
0 commit comments