Commit cbb839ec authored by Mygod's avatar Mygod

Fix up navigation

parent 179e5456
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent"
android:orientation="vertical">
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<include layout="@layout/toolbar_light_dark" /> <include layout="@layout/toolbar_light_dark" />
</FrameLayout> <me.dm7.barcodescanner.zxing.ZXingScannerView android:id="@+id/scanner"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"/>
</LinearLayout>
...@@ -42,6 +42,7 @@ package com.github.shadowsocks ...@@ -42,6 +42,7 @@ package com.github.shadowsocks
import java.util.concurrent.atomic.AtomicBoolean import java.util.concurrent.atomic.AtomicBoolean
import android.Manifest.permission import android.Manifest.permission
import android.app.TaskStackBuilder
import android.content._ import android.content._
import android.content.pm.PackageManager import android.content.pm.PackageManager
import android.graphics.drawable.Drawable import android.graphics.drawable.Drawable
...@@ -220,9 +221,11 @@ class AppManager extends AppCompatActivity with OnMenuItemClickListener { ...@@ -220,9 +221,11 @@ class AppManager extends AppCompatActivity with OnMenuItemClickListener {
toolbar = findViewById(R.id.toolbar).asInstanceOf[Toolbar] toolbar = findViewById(R.id.toolbar).asInstanceOf[Toolbar]
toolbar.setTitle(R.string.proxied_apps) toolbar.setTitle(R.string.proxied_apps)
toolbar.setNavigationIcon(R.drawable.abc_ic_ab_back_material) toolbar.setNavigationIcon(R.drawable.abc_ic_ab_back_material)
toolbar.setNavigationOnClickListener((v: View) => { toolbar.setNavigationOnClickListener(_ => {
val intent = getParentActivityIntent val intent = getParentActivityIntent
if (intent == null) finish else navigateUpTo(intent) if (shouldUpRecreateTask(intent) || isTaskRoot)
TaskStackBuilder.create(this).addNextIntentWithParentStack(intent).startActivities()
else finish()
}) })
toolbar.inflateMenu(R.menu.app_manager_menu) toolbar.inflateMenu(R.menu.app_manager_menu)
toolbar.setOnMenuItemClickListener(this) toolbar.setOnMenuItemClickListener(this)
......
...@@ -2,7 +2,7 @@ package com.github.shadowsocks ...@@ -2,7 +2,7 @@ package com.github.shadowsocks
import java.nio.charset.Charset import java.nio.charset.Charset
import android.app.Activity import android.app.{Activity, TaskStackBuilder}
import android.content._ import android.content._
import android.content.pm.PackageManager import android.content.pm.PackageManager
import android.nfc.NfcAdapter.CreateNdefMessageCallback import android.nfc.NfcAdapter.CreateNdefMessageCallback
...@@ -203,9 +203,11 @@ final class ProfileManagerActivity extends AppCompatActivity with OnMenuItemClic ...@@ -203,9 +203,11 @@ final class ProfileManagerActivity extends AppCompatActivity with OnMenuItemClic
val toolbar = findViewById(R.id.toolbar).asInstanceOf[Toolbar] val toolbar = findViewById(R.id.toolbar).asInstanceOf[Toolbar]
toolbar.setTitle(R.string.profiles) toolbar.setTitle(R.string.profiles)
toolbar.setNavigationIcon(R.drawable.ic_navigation_close) toolbar.setNavigationIcon(R.drawable.ic_navigation_close)
toolbar.setNavigationOnClickListener((v: View) => { toolbar.setNavigationOnClickListener(_ => {
val intent = getParentActivityIntent val intent = getParentActivityIntent
if (intent == null) finish else navigateUpTo(intent) if (shouldUpRecreateTask(intent) || isTaskRoot)
TaskStackBuilder.create(this).addNextIntentWithParentStack(intent).startActivities()
else finish()
}) })
toolbar.inflateMenu(R.menu.profile_manager_menu) toolbar.inflateMenu(R.menu.profile_manager_menu)
toolbar.setOnMenuItemClickListener(this) toolbar.setOnMenuItemClickListener(this)
......
package com.github.shadowsocks package com.github.shadowsocks
import android.app.Activity import android.app.{Activity, TaskStackBuilder}
import android.content.Intent import android.content.Intent
import android.content.pm.{PackageManager, ShortcutManager} import android.content.pm.{PackageManager, ShortcutManager}
import android.os.{Build, Bundle} import android.os.{Build, Bundle}
...@@ -8,16 +8,18 @@ import android.support.v4.app.ActivityCompat ...@@ -8,16 +8,18 @@ import android.support.v4.app.ActivityCompat
import android.support.v4.content.ContextCompat import android.support.v4.content.ContextCompat
import android.support.v7.app.AppCompatActivity import android.support.v7.app.AppCompatActivity
import android.support.v7.widget.Toolbar import android.support.v7.widget.Toolbar
import android.view.{MenuItem, ViewGroup}
import android.widget.Toast import android.widget.Toast
import com.google.zxing.Result import com.google.zxing.Result
import me.dm7.barcodescanner.zxing.ZXingScannerView import me.dm7.barcodescanner.zxing.ZXingScannerView
class ScannerActivity extends AppCompatActivity with ZXingScannerView.ResultHandler { object ScannerActivity {
private final val MY_PERMISSIONS_REQUEST_CAMERA = 1
}
val MY_PERMISSIONS_REQUEST_CAMERA = 1 class ScannerActivity extends AppCompatActivity with ZXingScannerView.ResultHandler {
import ScannerActivity._
var scannerView: ZXingScannerView = _ private var scannerView: ZXingScannerView = _
override def onRequestPermissionsResult(requestCode: Int, permissions: Array[String], override def onRequestPermissionsResult(requestCode: Int, permissions: Array[String],
grantResults: Array[Int]) { grantResults: Array[Int]) {
...@@ -34,14 +36,21 @@ class ScannerActivity extends AppCompatActivity with ZXingScannerView.ResultHand ...@@ -34,14 +36,21 @@ class ScannerActivity extends AppCompatActivity with ZXingScannerView.ResultHand
} }
} }
def navigateUp() {
val intent = getParentActivityIntent
if (shouldUpRecreateTask(intent) || isTaskRoot)
TaskStackBuilder.create(this).addNextIntentWithParentStack(intent).startActivities()
else finish()
}
override def onCreate(state: Bundle) { override def onCreate(state: Bundle) {
super.onCreate(state) super.onCreate(state)
setContentView(R.layout.layout_scanner) setContentView(R.layout.layout_scanner)
setupToolbar() val toolbar = findViewById(R.id.toolbar).asInstanceOf[Toolbar]
toolbar.setTitle(getTitle)
scannerView = new ZXingScannerView(this) toolbar.setNavigationIcon(R.drawable.abc_ic_ab_back_material)
val contentFrame = findViewById(R.id.content_frame).asInstanceOf[ViewGroup] toolbar.setNavigationOnClickListener(_ => navigateUp())
contentFrame.addView(scannerView) scannerView = findViewById(R.id.scanner).asInstanceOf[ZXingScannerView]
if (Build.VERSION.SDK_INT >= 25) getSystemService(classOf[ShortcutManager]).reportShortcutUsed("scan") if (Build.VERSION.SDK_INT >= 25) getSystemService(classOf[ShortcutManager]).reportShortcutUsed("scan")
} }
...@@ -67,29 +76,7 @@ class ScannerActivity extends AppCompatActivity with ZXingScannerView.ResultHand ...@@ -67,29 +76,7 @@ class ScannerActivity extends AppCompatActivity with ZXingScannerView.ResultHand
val intent = new Intent() val intent = new Intent()
intent.putExtra("uri", rawResult.getText) intent.putExtra("uri", rawResult.getText)
setResult(Activity.RESULT_OK, intent) setResult(Activity.RESULT_OK, intent)
navigateUpTo(getParentActivityIntent) navigateUp()
}
def setupToolbar() {
val toolbar = findViewById(R.id.toolbar).asInstanceOf[Toolbar]
setSupportActionBar(toolbar)
val ab = getSupportActionBar()
if (ab != null) {
ab.setDisplayHomeAsUpEnabled(true)
}
}
override def onOptionsItemSelected(item: MenuItem): Boolean = {
item.getItemId() match {
// Respond to the action bar's Up/Home button
case android.R.id.home =>
setResult(Activity.RESULT_CANCELED, new Intent())
finish()
return true
case _ => // Do nothing
}
return super.onOptionsItemSelected(item)
} }
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment