From 83777c4fa4632719ce983dd3a013803de6f15a87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=A4rkl?= Date: Fri, 25 Oct 2019 17:27:02 +0200 Subject: [PATCH] Android Wakeup Dialog --- .../com/metallic/chiaki/main/MainActivity.kt | 42 ++++++++++++------- .../metallic/chiaki/regist/RegistActivity.kt | 2 +- .../chiaki/regist/RegistExecuteActivity.kt | 9 ++-- .../metallic/chiaki/stream/StreamActivity.kt | 7 ++-- android/app/src/main/res/values/strings.xml | 3 ++ android/app/src/main/res/values/styles.xml | 24 ++++++----- 6 files changed, 55 insertions(+), 32 deletions(-) diff --git a/android/app/src/main/java/com/metallic/chiaki/main/MainActivity.kt b/android/app/src/main/java/com/metallic/chiaki/main/MainActivity.kt index b107e0a..427af00 100644 --- a/android/app/src/main/java/com/metallic/chiaki/main/MainActivity.kt +++ b/android/app/src/main/java/com/metallic/chiaki/main/MainActivity.kt @@ -18,31 +18,30 @@ package com.metallic.chiaki.main import android.app.ActivityOptions +import android.app.AlertDialog import android.content.Intent -import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.view.Menu import android.view.MenuItem -import android.view.View -import android.view.animation.AnimationUtils +import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProviders import androidx.recyclerview.widget.LinearLayoutManager +import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.metallic.chiaki.R import com.metallic.chiaki.TestStartActivity import com.metallic.chiaki.common.DiscoveredDisplayHost import com.metallic.chiaki.common.DisplayHost import com.metallic.chiaki.common.Preferences -import com.metallic.chiaki.common.ext.RevealActivity import com.metallic.chiaki.common.ext.putRevealExtra -import com.metallic.chiaki.common.getDatabase import com.metallic.chiaki.common.ext.viewModelFactory +import com.metallic.chiaki.common.getDatabase import com.metallic.chiaki.lib.ConnectInfo import com.metallic.chiaki.lib.DiscoveryHost +import com.metallic.chiaki.lib.RegistEventSuccess import com.metallic.chiaki.regist.RegistActivity import com.metallic.chiaki.settings.SettingsActivity import com.metallic.chiaki.stream.StreamActivity -import io.reactivex.disposables.CompositeDisposable import kotlinx.android.synthetic.main.activity_main.* class MainActivity : AppCompatActivity() @@ -173,23 +172,38 @@ class MainActivity : AppCompatActivity() val registeredHost = host.registeredHost if(registeredHost != null) { - if(host is DiscoveredDisplayHost && host.discoveredHost.state == DiscoveryHost.State.STANDBY) - { - // TODO: show AlertDialog - viewModel.discoveryManager.sendWakeup(host.host, registeredHost.rpRegistKey) - } - else - { + fun connect() { val connectInfo = ConnectInfo(host.host, registeredHost.rpRegistKey, registeredHost.rpKey, Preferences(this).videoProfile) Intent(this, StreamActivity::class.java).let { it.putExtra(StreamActivity.EXTRA_CONNECT_INFO, connectInfo) startActivity(it) } } + + if(host is DiscoveredDisplayHost && host.discoveredHost.state == DiscoveryHost.State.STANDBY) + { + MaterialAlertDialogBuilder(this) + .setMessage(R.string.alert_message_standby_wakeup) + .setPositiveButton(R.string.action_wakeup) { _, _ -> + viewModel.discoveryManager.sendWakeup(host.host, registeredHost.rpRegistKey) + } + .setNeutralButton(R.string.action_connect_immediately) { _, _ -> + connect() + } + .setNegativeButton(R.string.action_connect_cancel_connect) { _, _ -> } + .create() + .show() + } + else + connect() } else { - // TODO: show registration + Intent(this, RegistActivity::class.java).let { + it.putExtra(RegistActivity.EXTRA_HOST, host.host) + it.putExtra(RegistActivity.EXTRA_BROADCAST, false) + startActivity(it) + } } } } diff --git a/android/app/src/main/java/com/metallic/chiaki/regist/RegistActivity.kt b/android/app/src/main/java/com/metallic/chiaki/regist/RegistActivity.kt index 7e7754d..b79cd74 100644 --- a/android/app/src/main/java/com/metallic/chiaki/regist/RegistActivity.kt +++ b/android/app/src/main/java/com/metallic/chiaki/regist/RegistActivity.kt @@ -79,7 +79,7 @@ class RegistActivity: AppCompatActivity(), RevealActivity viewModel.ps4Version.observe(this, Observer { psnAccountIdHelpGroup.visibility = if(it == RegistViewModel.PS4Version.GE_7) View.VISIBLE else View.GONE - psnIdTextInputLayout.hint = getString(when(it) + psnIdTextInputLayout.hint = getString(when(it!!) { RegistViewModel.PS4Version.GE_7 -> R.string.hint_regist_psn_account_id RegistViewModel.PS4Version.LT_7 -> R.string.hint_regist_psn_online_id diff --git a/android/app/src/main/java/com/metallic/chiaki/regist/RegistExecuteActivity.kt b/android/app/src/main/java/com/metallic/chiaki/regist/RegistExecuteActivity.kt index 6de946c..869a9f9 100644 --- a/android/app/src/main/java/com/metallic/chiaki/regist/RegistExecuteActivity.kt +++ b/android/app/src/main/java/com/metallic/chiaki/regist/RegistExecuteActivity.kt @@ -18,15 +18,15 @@ package com.metallic.chiaki.regist import android.app.Activity -import android.app.AlertDialog -import android.content.DialogInterface import android.content.Intent import android.os.Bundle import android.text.method.ScrollingMovementMethod import android.view.View +import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProviders +import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.metallic.chiaki.R import com.metallic.chiaki.common.MacAddress import com.metallic.chiaki.common.ext.viewModelFactory @@ -55,6 +55,9 @@ class RegistExecuteActivity: AppCompatActivity() .of(this, viewModelFactory { RegistExecuteViewModel(getDatabase(this)) }) .get(RegistExecuteViewModel::class.java) + showDuplicateDialog() + return + logTextView.setHorizontallyScrolling(true) logTextView.movementMethod = ScrollingMovementMethod() viewModel.logText.observe(this, Observer { @@ -123,7 +126,7 @@ class RegistExecuteActivity: AppCompatActivity() val macStr = viewModel.host?.ps4Mac?.let { MacAddress(it).toString() } ?: "" - dialog = AlertDialog.Builder(this) + dialog = MaterialAlertDialogBuilder(this) .setMessage(getString(R.string.alert_regist_duplicate, macStr)) .setNegativeButton(R.string.action_regist_discard) { _, _ -> } .setPositiveButton(R.string.action_regist_overwrite) { _, _ -> diff --git a/android/app/src/main/java/com/metallic/chiaki/stream/StreamActivity.kt b/android/app/src/main/java/com/metallic/chiaki/stream/StreamActivity.kt index b57f6d7..8d25c38 100644 --- a/android/app/src/main/java/com/metallic/chiaki/stream/StreamActivity.kt +++ b/android/app/src/main/java/com/metallic/chiaki/stream/StreamActivity.kt @@ -30,6 +30,7 @@ import android.widget.EditText import androidx.appcompat.app.AppCompatActivity import androidx.fragment.app.Fragment import androidx.lifecycle.* +import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.metallic.chiaki.* import com.metallic.chiaki.R import com.metallic.chiaki.lib.ConnectInfo @@ -142,7 +143,7 @@ class StreamActivity : AppCompatActivity() { dialog?.dismiss() val reasonStr = state.reasonString - val dialog = AlertDialog.Builder(this) + val dialog = MaterialAlertDialogBuilder(this) .setMessage(getString(R.string.alert_message_session_quit, state.reason.toString()) + (if(reasonStr != null) "\n$reasonStr" else "")) .setPositiveButton(R.string.action_reconnect) { _, _ -> @@ -168,7 +169,7 @@ class StreamActivity : AppCompatActivity() if(dialogContents != CreateErrorDialog) { dialog?.dismiss() - val dialog = AlertDialog.Builder(this) + val dialog = MaterialAlertDialogBuilder(this) .setMessage(getString(R.string.alert_message_session_create_error, state.error.errorCode.toString())) .setOnDismissListener { dialog = null @@ -190,7 +191,7 @@ class StreamActivity : AppCompatActivity() val view = layoutInflater.inflate(R.layout.dialog_login_pin, null) val pinEditText = view.findViewById(R.id.pinEditText) - val dialog = AlertDialog.Builder(this) + val dialog = MaterialAlertDialogBuilder(this) .setMessage( if(state.pinIncorrect) R.string.alert_message_login_pin_request_incorrect diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index 568a70f..913ed5e 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -8,6 +8,9 @@ Login PIN: Entered PIN was incorrect!\nLogin PIN: Reconnect + Wakeup + Connect + Cancel Quit Connect Settings diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml index 503a53e..e89800c 100644 --- a/android/app/src/main/res/values/styles.xml +++ b/android/app/src/main/res/values/styles.xml @@ -8,6 +8,7 @@ #000000 ?attr/colorPrimarySurface ?attr/colorPrimarySurface + @style/AppTheme.AlertDialog true @@ -22,6 +23,15 @@ @color/floating_action_button_speed_dial_tint + + + + - - - - -