wip support for editing bookmarks

This commit is contained in:
Öppen 2020-09-12 21:51:41 +01:00
parent 8c01af4060
commit ac66cf6b9e
3 changed files with 34 additions and 16 deletions

View File

@ -148,7 +148,7 @@ class GemActivity : AppCompatActivity() {
R.id.overflow_menu_bookmark -> { R.id.overflow_menu_bookmark -> {
println("Bookmark: ---------------------------") println("Bookmark: ---------------------------")
val name = adapter.inferTitle() val name = adapter.inferTitle()
BookmarkDialog(this, bookmarkDatasource, binding.addressEdit.text.toString(), name ?: ""){ BookmarkDialog(this, BookmarkDialog.mode_new, bookmarkDatasource, binding.addressEdit.text.toString(), name ?: ""){ _, _ ->
bookmarkDatasource.get { bookmarks -> bookmarkDatasource.get { bookmarks ->
bookmarks.forEach {bookmark -> bookmarks.forEach {bookmark ->
println("Bookmark: ${bookmark.label}: ${bookmark.uri}") println("Bookmark: ${bookmark.label}: ${bookmark.uri}")

View File

@ -14,10 +14,16 @@ import java.net.URI
class BookmarkDialog( class BookmarkDialog(
context: Context, context: Context,
private val bookmarkDatasource: BookmarksDatasource, val mode: Int,
val bookmarkDatasource: BookmarksDatasource?,
val uri: String, val uri: String,
val name: String, val name: String,
onDismiss: () -> Unit) : AppCompatDialog(context, R.style.FSDialog) { onDismiss: (label: String?, uri: String?) -> Unit) : AppCompatDialog(context, R.style.FSDialog) {
companion object{
const val mode_new = 0
const val mode_edit = 1
}
init { init {
val view = View.inflate(context, R.layout.fragment_bookmark_dialog, null) val view = View.inflate(context, R.layout.fragment_bookmark_dialog, null)
@ -26,7 +32,7 @@ class BookmarkDialog(
view.bookmark_toolbar.setNavigationIcon(R.drawable.vector_close) view.bookmark_toolbar.setNavigationIcon(R.drawable.vector_close)
view.bookmark_toolbar.setNavigationOnClickListener { view.bookmark_toolbar.setNavigationOnClickListener {
onDismiss() onDismiss(null, null)
dismiss() dismiss()
} }
@ -36,19 +42,29 @@ class BookmarkDialog(
view.bookmark_toolbar.inflateMenu(R.menu.add_bookmark) view.bookmark_toolbar.inflateMenu(R.menu.add_bookmark)
view.bookmark_toolbar.setOnMenuItemClickListener {menuItem -> view.bookmark_toolbar.setOnMenuItemClickListener {menuItem ->
if(menuItem.itemId == R.id.menu_action_save_bookmark){ if(menuItem.itemId == R.id.menu_action_save_bookmark){
//Determine index:
//todo - this is expensive, we can just get the table size from SQLite: if(mode == mode_new) {
bookmarkDatasource.get { allBookmarks -> //Determine index:
bookmarkDatasource.add(Bookmark( //todo - this is expensive, just get last item, limit1?
label = view.bookmark_name.text.toString(), bookmarkDatasource?.get { allBookmarks ->
uri = URI.create(view.bookmark_uri.text.toString()), bookmarkDatasource.add(
index = allBookmarks.last().index + 1 Bookmark(
)){ label = view.bookmark_name.text.toString(),
Handler(Looper.getMainLooper()).post { uri = URI.create(view.bookmark_uri.text.toString()),
onDismiss() index = allBookmarks.last().index + 1
dismiss() )
) {
Handler(Looper.getMainLooper()).post {
onDismiss(null, null)
dismiss()
}
} }
} }
}else if(mode == mode_edit){
onDismiss(
view.bookmark_name.text.toString(),
view.bookmark_uri.text.toString())
dismiss()
} }
} }

View File

@ -79,7 +79,9 @@ class BookmarksDialog(
} }
private fun edit(bookmark: Bookmark){ private fun edit(bookmark: Bookmark){
BookmarkDialog(context, BookmarkDialog.mode_edit, null, bookmark.uri.toString(), bookmark.label){ label, uri ->
//todo - update in db
}.show()
} }
/** /**