Skip to content

Commit f7ba04a

Browse files
committed
add a pop up window for the notebook menu
1 parent 6402c57 commit f7ba04a

File tree

3 files changed

+52
-1
lines changed

3 files changed

+52
-1
lines changed

app/src/main/java/com/orgzly/android/ui/books/BooksFragment.kt

+39
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,10 @@ class BooksFragment : Fragment(), DrawerItem, OnViewHolderClickListener<BookView
278278
R.id.books_context_menu_delete -> {
279279
viewModel.deleteBookRequest(bookId)
280280
}
281+
282+
R.id.books_context_menu_show_diff -> {
283+
viewModel.showDiffBookRequest(bookId)
284+
}
281285
}
282286

283287
viewModel.appBar.toMode(APP_BAR_DEFAULT_MODE)
@@ -305,6 +309,35 @@ class BooksFragment : Fragment(), DrawerItem, OnViewHolderClickListener<BookView
305309
pickFileForBookExport.launch(defaultFileName)
306310
}
307311

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+
308341
private fun deleteBookDialog(book: BookView) {
309342
val dialogBinding = DialogBookDeleteBinding.inflate(LayoutInflater.from(context))
310343

@@ -427,6 +460,12 @@ class BooksFragment : Fragment(), DrawerItem, OnViewHolderClickListener<BookView
427460
}
428461
})
429462

463+
viewModel.showDiffEvent.observeSingle(viewLifecycleOwner, Observer { bookView ->
464+
if (bookView != null) {
465+
showDiffDialog(bookView)
466+
}
467+
})
468+
430469
viewModel.bookToRenameEvent.observeSingle(viewLifecycleOwner, Observer { bookView ->
431470
if (bookView != null) {
432471
renameBookDialog(bookView)

app/src/main/java/com/orgzly/android/ui/books/BooksViewModel.kt

+7-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ class BooksViewModel(private val dataRepository: DataRepository) : CommonViewMod
3030
val bookToExportEvent: SingleLiveEvent<Pair<Book, BookFormat>> = SingleLiveEvent()
3131
val bookExportedEvent: SingleLiveEvent<String> = SingleLiveEvent()
3232
val setBookLinkRequestEvent: SingleLiveEvent<BookLinkOptions> = SingleLiveEvent()
33-
33+
val showDiffEvent: SingleLiveEvent<BookView> = SingleLiveEvent()
3434

3535
enum class ViewState {
3636
LOADING,
@@ -70,6 +70,12 @@ class BooksViewModel(private val dataRepository: DataRepository) : CommonViewMod
7070
}
7171
}
7272

73+
fun showDiffBookRequest(bookId: Long) {
74+
App.EXECUTORS.diskIO().execute {
75+
showDiffEvent.postValue(dataRepository.getBookView(bookId))
76+
}
77+
}
78+
7379
fun deleteBook(bookId: Long, deleteLinked: Boolean) {
7480
App.EXECUTORS.diskIO().execute {
7581
catchAndPostError {

app/src/main/res/menu/books_cab.xml

+6
Original file line numberDiff line numberDiff line change
@@ -40,4 +40,10 @@
4040
app:showAsAction="never">
4141
</item>
4242

43+
<item
44+
android:id="@+id/books_context_menu_show_diff"
45+
android:title="Show diff"
46+
app:showAsAction="never">
47+
</item>
48+
4349
</menu>

0 commit comments

Comments
 (0)