From cf89594c9a4f34355acf40b6fd84f809caa62997 Mon Sep 17 00:00:00 2001 From: kunfei Date: Fri, 7 Feb 2020 13:28:55 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/book/arrange/ArrangeBookActivity.kt | 49 +++++++++++++++++-- .../main/res/layout/activity_arrange_book.xml | 1 + app/src/main/res/menu/arrange_book.xml | 20 +++++++- 3 files changed, 64 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/io/legado/app/ui/book/arrange/ArrangeBookActivity.kt b/app/src/main/java/io/legado/app/ui/book/arrange/ArrangeBookActivity.kt index 509c15bbe..58dfd7ec7 100644 --- a/app/src/main/java/io/legado/app/ui/book/arrange/ArrangeBookActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/arrange/ArrangeBookActivity.kt @@ -14,6 +14,7 @@ import io.legado.app.data.entities.BookGroup import io.legado.app.lib.dialogs.alert import io.legado.app.lib.dialogs.okButton import io.legado.app.lib.theme.ATH +import io.legado.app.ui.book.group.GroupManageDialog import io.legado.app.ui.book.group.GroupSelectDialog import io.legado.app.utils.applyTint import io.legado.app.utils.getVerticalDivider @@ -32,10 +33,13 @@ class ArrangeBookActivity : VMBaseActivity(R.layout.activi private lateinit var adapter: ArrangeBookAdapter private var groupLiveData: LiveData>? = null private var booksLiveData: LiveData>? = null + private var menu: Menu? = null + private var groupId: Int = -1 override fun onActivityCreated(savedInstanceState: Bundle?) { initView() - initData() + initGroupData() + initBookData() } override fun onCompatCreateOptionsMenu(menu: Menu): Boolean { @@ -43,9 +47,28 @@ class ArrangeBookActivity : VMBaseActivity(R.layout.activi return super.onCompatCreateOptionsMenu(menu) } + override fun onPrepareOptionsMenu(menu: Menu?): Boolean { + this.menu = menu + upMenu() + return super.onPrepareOptionsMenu(menu) + } + override fun onCompatOptionsItemSelected(item: MenuItem): Boolean { when (item.itemId) { - + R.id.menu_group_manage -> GroupManageDialog() + .show(supportFragmentManager, "groupManage") + R.id.menu_all -> { + title_bar.subtitle = item.title + groupId = -1 + adapter.selectedBooks.clear() + initBookData() + } + else -> { + title_bar.subtitle = item.title + groupId = item.itemId + adapter.selectedBooks.clear() + initBookData() + } } return super.onCompatOptionsItemSelected(item) } @@ -79,22 +102,40 @@ class ArrangeBookActivity : VMBaseActivity(R.layout.activi } } - private fun initData() { + private fun initGroupData() { groupLiveData?.removeObservers(this) groupLiveData = App.db.bookGroupDao().liveDataAll() groupLiveData?.observe(this, Observer { groupList.clear() groupList.addAll(it) adapter.notifyDataSetChanged() + upMenu() }) + } + + private fun initBookData() { booksLiveData?.removeObservers(this) - booksLiveData = App.db.bookDao().observeAll() + booksLiveData = + if (groupId == -1) { + App.db.bookDao().observeAll() + } else { + App.db.bookDao().observeByGroup(groupId) + } booksLiveData?.observe(this, Observer { adapter.setItems(it) upSelectCount() }) } + private fun upMenu() { + menu?.findItem(R.id.menu_book_group)?.subMenu?.let { subMenu -> + subMenu.removeGroup(R.id.menu_group) + groupList.forEach { bookGroup -> + subMenu.add(R.id.menu_group, bookGroup.groupId, Menu.NONE, bookGroup.groupName) + } + } + } + override fun selectGroup(requestCode: Int) { GroupSelectDialog.show(supportFragmentManager, requestCode) } diff --git a/app/src/main/res/layout/activity_arrange_book.xml b/app/src/main/res/layout/activity_arrange_book.xml index 795e1bfa4..45919b240 100644 --- a/app/src/main/res/layout/activity_arrange_book.xml +++ b/app/src/main/res/layout/activity_arrange_book.xml @@ -7,6 +7,7 @@ android:layout_height="match_parent"> diff --git a/app/src/main/res/menu/arrange_book.xml b/app/src/main/res/menu/arrange_book.xml index 0b47d59ef..f5dcc2d39 100644 --- a/app/src/main/res/menu/arrange_book.xml +++ b/app/src/main/res/menu/arrange_book.xml @@ -1,9 +1,25 @@ - + + android:icon="@drawable/ic_groups" + app:showAsAction="always"> + + + + + + + + + + \ No newline at end of file