From 923374a28b9ebb81e9a14e0732117808bcc472f2 Mon Sep 17 00:00:00 2001 From: Mygod Date: Fri, 20 Jan 2017 04:30:59 +0800 Subject: [PATCH] Add back handler for ACL fragment --- .../scala/com/github/shadowsocks/MainActivity.scala | 9 +++++---- .../com/github/shadowsocks/ToolbarFragment.scala | 2 ++ .../github/shadowsocks/acl/CustomRulesFragment.scala | 12 +++++++++--- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/mobile/src/main/scala/com/github/shadowsocks/MainActivity.scala b/mobile/src/main/scala/com/github/shadowsocks/MainActivity.scala index aad23528..f4a84f1a 100644 --- a/mobile/src/main/scala/com/github/shadowsocks/MainActivity.scala +++ b/mobile/src/main/scala/com/github/shadowsocks/MainActivity.scala @@ -406,10 +406,11 @@ class MainActivity extends Activity with ServiceBoundContext with Drawer.OnDrawe } override def onBackPressed(): Unit = - if (drawer.isDrawerOpen) drawer.closeDrawer() else if (currentFragment != profilesFragment) { - displayFragment(profilesFragment) - drawer.setSelection(DRAWER_PROFILES) - } else super.onBackPressed() + if (drawer.isDrawerOpen) drawer.closeDrawer() else if (!currentFragment.onBackPressed()) + if (currentFragment != profilesFragment) { + displayFragment(profilesFragment) + drawer.setSelection(DRAWER_PROFILES) + } else super.onBackPressed() override def onStop() { setListeningForBandwidth(false) diff --git a/mobile/src/main/scala/com/github/shadowsocks/ToolbarFragment.scala b/mobile/src/main/scala/com/github/shadowsocks/ToolbarFragment.scala index 3afe18f3..e21a6b80 100644 --- a/mobile/src/main/scala/com/github/shadowsocks/ToolbarFragment.scala +++ b/mobile/src/main/scala/com/github/shadowsocks/ToolbarFragment.scala @@ -36,4 +36,6 @@ class ToolbarFragment extends Fragment { } def onTrafficUpdated(profileId: Int, txRate: Long, rxRate: Long, txTotal: Long, rxTotal: Long): Unit = () + + def onBackPressed(): Boolean = false } diff --git a/mobile/src/main/scala/com/github/shadowsocks/acl/CustomRulesFragment.scala b/mobile/src/main/scala/com/github/shadowsocks/acl/CustomRulesFragment.scala index 220dc804..5426c3ab 100644 --- a/mobile/src/main/scala/com/github/shadowsocks/acl/CustomRulesFragment.scala +++ b/mobile/src/main/scala/com/github/shadowsocks/acl/CustomRulesFragment.scala @@ -63,9 +63,8 @@ class CustomRulesFragment extends ToolbarFragment with Toolbar.OnMenuItemClickLi } private val selectedItems = new mutable.HashSet[AnyRef] - private def onSelectedItemsUpdated(): Unit = if (selectionItem != null) { - selectionItem.setVisible(selectedItems.nonEmpty) - } + private def onSelectedItemsUpdated(): Unit = + if (selectionItem != null) selectionItem.setVisible(selectedItems.nonEmpty) private final class AclRuleViewHolder(view: View) extends RecyclerView.ViewHolder(view) with View.OnClickListener with View.OnLongClickListener { @@ -263,6 +262,13 @@ class CustomRulesFragment extends ToolbarFragment with Toolbar.OnMenuItemClickLi }).attachToRecyclerView(list) } + override def onBackPressed(): Boolean = if (selectedItems.nonEmpty) { + selectedItems.clear() + onSelectedItemsUpdated() + adapter.notifyDataSetChanged() + true + } else super.onBackPressed() + override def onSaveInstanceState(outState: Bundle): Unit = { super.onSaveInstanceState(outState) outState.putStringArray(SELECTED_SUBNETS, selectedItems.filter(_.isInstanceOf[Subnet]).map(_.toString).toArray)