package oppen.gem.ui.bookmarks import android.content.Context import android.os.Handler import android.os.Looper import android.view.View import androidx.appcompat.app.AppCompatDialog import androidx.appcompat.widget.PopupMenu import androidx.recyclerview.widget.LinearLayoutManager import kotlinx.android.synthetic.main.dialog_bookmarks.view.* import oppen.gem.R import oppen.gem.io.bookmarks.Bookmark import oppen.gem.io.bookmarks.BookmarksDatasource class BookmarksDialog( context: Context, private val bookmarkDatasource: BookmarksDatasource, onBookmark: (bookmark: Bookmark) -> Unit): AppCompatDialog(context, R.style.FSDialog) { var bookmarksAdapter: BookmarksAdapter init { val view = View.inflate(context, R.layout.dialog_bookmarks, null) setContentView(view) view.bookmarks_toolbar.setNavigationIcon(R.drawable.vector_close) view.bookmarks_toolbar.setNavigationOnClickListener { dismiss() } //None as yet view.bookmarks_toolbar.inflateMenu(R.menu.add_bookmarks) view.bookmarks_toolbar.setOnMenuItemClickListener {menuItem -> true } view.bookmarks_recycler.layoutManager = LinearLayoutManager(context) bookmarksAdapter = BookmarksAdapter({ bookmark -> //onBookmark onBookmark(bookmark) dismiss() }){ view, bookmark, isFirst, isLast -> //onOverflow val bookmarkOverflow = PopupMenu(context, view) bookmarkOverflow.inflate(R.menu.menu_bookmark) if(isFirst) bookmarkOverflow.menu.removeItem(R.id.menu_bookmark_move_up) if(isLast) bookmarkOverflow.menu.removeItem(R.id.menu_bookmark_move_down) bookmarkOverflow.setOnMenuItemClickListener { menuItem -> when(menuItem.itemId){ R.id.menu_bookmark_edit -> {} R.id.menu_bookmark_delete -> {} R.id.menu_bookmark_move_up -> moveUp(bookmark) R.id.menu_bookmark_move_down-> moveDown(bookmark) } true } bookmarkOverflow.show() } view.bookmarks_recycler.adapter = bookmarksAdapter bookmarkDatasource.get { bookmarks -> Handler(Looper.getMainLooper()).post { bookmarksAdapter.update(bookmarks) } } } private fun moveUp(bookmark: Bookmark){ bookmarkDatasource.moveUp(bookmark){ bookmarkDatasource.get { bookmarks -> Handler(Looper.getMainLooper()).post { bookmarksAdapter.update(bookmarks) } } } } private fun moveDown(bookmark: Bookmark){ bookmarkDatasource.moveDown(bookmark){ bookmarkDatasource.get { bookmarks -> Handler(Looper.getMainLooper()).post { bookmarksAdapter.update(bookmarks) } } } } }